我的问题是关于XML到LINQ,我有以下结构:
<Or>
<value />
<Or>
<value />
<Or> //this is the deepest "or" element i should get in this case
<value />
<value />
</Or>
</Or>
</Or>
我基本上是以编程方式构建的,但是我的问题是如何获得最深的Or元素?
如果我这样做:
elements.Element("Or"),
它只是让我成为第一个顶级元素或......
等待回应。
答案 0 :(得分:4)
XDocument xDoc = XDocument.Parse(xml); //XDocument.Parse(filename);
var deepestOr = xDoc.Descendants("Or")
.First(or => !or.Descendants("Or").Any());
答案 1 :(得分:2)
试试
var bench = XElement.Parse(@"<Or><value /><Or><value /><Or><value /><value /></Or></Or></Or>");
var lastOne = bench.Descendants("Or").Where( n => n.NodeType == XmlNodeType.Element).Last();
结果:
<Or>
<value />
<value />
</Or>
无论多深,
答案 2 :(得分:0)
这会给你结果:
XDocument doc = XDocument.Parse(@"<Or><value /><Or><value /><Or><value /><value /></Or></Or></Or>");
// take 'Or' node which contains no 'Of' nodes
var deepest = doc.Descendants("Or").Where(node => node.Descendants("Or").Count() == 0);