C# 得到最深或最深的元素
我的问题是关于LINQ的XML,我有如下结构:C# 得到最深或最深的元素,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我的问题是关于LINQ的XML,我有如下结构: <Or> <value /> <Or> <value /> <Or> //this is the deepest "or" element i should get in this case <value /> <value /> </Or>
<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”),
它只会让我得到第一个最上面的元素,或者
等待答复。试试看
XDocument xDoc = XDocument.Parse(xml); //XDocument.Parse(filename);
var deepestOr = xDoc.Descendants("Or")
.First(or => !or.Descendants("Or").Any());
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();
var bench=XElement.Parse(@');
var lastOne=bench.substands(“Or”)。其中(n=>n.NodeType==XmlNodeType.Element)。Last();
结果:
<Or>
<value />
<value />
</Or>
无论它有多深这将为您提供以下结果:
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);
XDocument doc=XDocument.Parse(@');
//获取不包含“Of”节点的“Or”节点
var=doc.substands(“Or”)。其中(node=>node.substands(“Or”).Count()==0);
如果文档中不同位置有多个相同深度的或
元素,该怎么办?不会的,总会有一位家长,然后是一位家长,然后是一位家长,或者是一位家长,然后是一位孩子,这三个元素中哪一个是最深的?更新了帖子,这是Or,我需要它:),虽然正如我所说的,它是递归构建的,可以是deaper,所以我不想做类似element.element(“或”).element(“或”)。。。等