我在以下结构中有一个xml
<root>
<Node>
<value>a</value>
<value>b</value>
<value>c</value>
</Node>
<Node>
<value>d</value>
<value>e</value>
<value>f</value>
</Node>
<Node>
<value>x</value>
<value>y</value>
</Node>
</root>
我想使用XPath ./ root / Node / value 来选择按其部分分组的值节点。所以结果是3个列表[a,b,c],[d,e,f],[x,y]。
如何使用C#实现这一目标?
提前致谢。
答案 0 :(得分:2)
使用Linq To Xml
var xDoc = XDocument.Load(filename);
var lists = xDoc.Descendants("Node")
.Select(n => n.Elements("value").Select(v => v.Value).ToList())
.ToList();
或强>
var lists = xDoc.XPathSelectElements("//Node/value")
.GroupBy(x => x.Parent)
.Select(x => x.Select(y => y.Value).ToList())
.ToList();
答案 1 :(得分:0)
您可以使用LINQ to XML
轻松实现目标。在大多数情况下,最好将您的收藏设为IEnumerable
而不是List
。
var doc = XDocument.Parse(xml);
var nodes = doc.Descendants("Node")
.Select(n => n.Elements().Select(e => e.Value));