3

我的问题是关于 XML to LINQ 的问题,其中我有以下结构:

<Or>
   <value />
      <Or>
         <value />
         <Or> //this is the deepest "or" element i should get in this case
           <value />
           <value />
         </Or>
    </Or>
</Or>

我基本上是通过recrusion以编程方式构建的,但我的问题是如何获得最深的 Or 元素?

如果我做:

elements.Element("Or"),它只是让我成为第一个顶级元素或....

等待回复。

4

3 回答 3

4
XDocument xDoc = XDocument.Parse(xml); //XDocument.Parse(filename);
var deepestOr = xDoc.Descendants("Or")
                    .First(or => !or.Descendants("Or").Any());
于 2012-12-13T08:24:26.323 回答
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>

不管有多深

于 2012-12-13T08:30:44.587 回答
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);
于 2012-12-13T08:42:55.317 回答