从xml字符串中检索数据

时间:2011-03-13 19:23:40

标签: c# xml

我正在使用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;
                  }

2 个答案:

答案 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();

这将是一个字符串列表。