如何处理特定的XElement

时间:2013-05-19 13:30:54

标签: c# linq-to-xml xelement

考虑您有以下xml结构:

<root>
  <File> a.txt 
      <Version> 1.5 </Version>
  </File>

  <File> b.txt 
      <Version> 1.0 </Version>
  </File>
</root>

如何获得XElement的句柄: <Version> 1.0 </Version>搜索? 我知道我可以通过标签搜索功能XElement.element(Xname) 但这对我没有帮助。

2 个答案:

答案 0 :(得分:2)

你想要一个版本列表......就在这里!

XDocument doc=XDocument.Load(yourXML);
List<string> lst=doc.Descendants()
                    .Elements("Version")
                    .Select(x=>x.Value).ToList();

答案 1 :(得分:0)

你的问题不明确,所以我会根据我的理解回答

如果你想获得Version的列表,那么这段代码就足够了

var versions = xDoc.Descendants("Version").ToList();

如果您想从xml中提取其他信息,那么

var files = xDoc.Descendants("File")
                .Select(f => new
                {
                    File = f.Nodes().OfType<XText>().First().Value.Trim(),
                    Version = f.Element("Version").Value.Trim()
                })
                .ToList();

棘手的部分是获取b.txt等文件名,因为 XElement File还包含其子项的值( Version