2

我创建了 xmlnodelist,我想处理没有子元素的元素的值。在下面的代码中,我正在检查子节点,我从所有元素中得到了正确的结果,即使是那些没有子节点的元素。如何选择树中的最后一个元素并处理值?

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))

或者,您可以遍历 ChildNode 并查看其中一个是否是元素。

于 2012-10-12T21:12:37.483 回答