C# C中XPathSelectElements的分组结果#
我有一个如下结构的xmlC# C中XPathSelectElements的分组结果#,c#,xml,xpath,C#,Xml,Xpath,我有一个如下结构的xml <root> <Node> <value>a</value> <value>b</value> <value>c</value> </Node> <Node> <value>d</value> <value&g
<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>
A.
B
C
D
E
F
x
Y
我想使用XPath/root/Node/value来选择按节分组到列表中的value节点。结果是3个列表[a,b,c],[d,e,f],[x,y]
如何使用C#实现这一点
提前感谢。您可以使用
LINQ to XML
轻松实现您的目标。在大多数情况下,最好将您的收藏设置为IEnumerable
,而不是List
var doc = XDocument.Parse(xml);
var nodes = doc.Descendants("Node")
.Select(n => n.Elements().Select(e => e.Value));
使用Linq转换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();
你试过什么吗?如果您只需搜索,就可以看到数百个在C#中读取XML的示例。显示您当前的代码,这样我们就可以告诉您哪里出错了。