我正在使用c#从监护人网络服务检索数据。我得到的答案是xml字符串,就像这样
< results >
< content >
< fields >
< field name="headlines"> This is headline < /field>
< field name="text"> This is text < /field>
<field name="url"> This is url < /field>
< fields>
< /content>
< content>
.........
< /content>
....
< results>
问题是所有具有数据的节点都具有与“field”相同的名称。当我使用此代码时,它返回来自第一个字段节点的数据,但我想要来自名为text的字段的数据。
var head = xmlStories.Root.Descendants("fields").Select(results => new
{
Text = results.Element("field").Value,
}).ToList();
foreach (var results in head)
{
text [h] = results.Text;
h = h + 1;
}
答案 0 :(得分:1)
怎么样:
var fieldName = "text";
var text =
xmlStories
.Descendants("field")
.Where(e => e.Attribute("name").Value.Equals(fieldName));
答案 1 :(得分:0)
这样可行:
var head = xmlStories.Descendants("field")
.Where(field =>(string)field.Attribute("name") == "text")
.Select(field => new
{
Text = (string)field,
})
.ToList();
请注意.Where()
条件下的强制转换为字符串,这将涵盖属性name
根本不存在的情况。
如果您只想要一个包含该字符串属性内容的列表,则不需要匿名类,更短的是:
var head = xmlStories.Descendants("field")
.Where(field =>(string)field.Attribute("name") == "text")
.Select(field => (string)field)
.ToList();
这将是一个字符串列表。