2

xmlnodelist を作成しましたが、子を持たない要素の値を処理したいと考えています。次のコードでは、子ノードをチェックしており、すべての要素から true を取得しています。子がない要素も含まれます。ツリーの最後の要素を選択して値を処理するにはどうすればよいですか?

XmlDocument XDoc = new XmlDocument();
            XDoc.Load("d://avi.xml");
            XmlNodeList XList = XDoc.SelectNodes("//*");
            foreach (XmlElement XNode in XList)
            {
                    if (XNode.HasChildNodes == true)
                    {
                        Console.WriteLine("this node has childs");
                        continue;
                    }
                    else Console.WriteLine("this node dont have childs");      
            } 


<level1>
    <level2>
        <level3>header3</level3>
        <level4>another</level4>
        <level31>header31</level31>
    </level2>
    <level2>
        <level3>111</level3>
        <level31>nn</level31>
    </level2>
</level1>
4

2 に答える 2

2

これにLinq to Xmlを使用するのはどうですか?

var xElem = XElement.Parse(xml);

var leafElements = xElem.Descendants()
                        .Where(e => !e.HasElements)
                        .ToList();
于 2012-10-12T21:12:07.277 に答える
1

要素内のテキストも「ノード」です。あなたが欲しいのは

if (XNode.ChildNodes.Any(n=>n.NodeType == XmlNodeType.Element))

または、ChildNodes をループして、そのうちの 1 つが要素かどうかを確認することもできます。

于 2012-10-12T21:12:37.483 に答える