3

私の質問は、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"),それは私に最初のトップ要素を取得するだけですまたは...。

応答を待っています。

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 に答える