如何在c#中检查xmlnode的innertext或value?

如何在c#中检查xmlnode的innertext或value?,c#,xml,C#,Xml,我创建了xmlnodelist,我想处理没有child的元素的值。 在下面的代码中,我检查childnodes,从所有元素中都得到true,甚至 那些没有孩子的。 如何拾取树中的最后一个元素并处理值的大小 XmlDocument XDoc = new XmlDocument(); XDoc.Load("d://avi.xml"); XmlNodeList XList = XDoc.SelectNodes("//*"); fo

我创建了xmlnodelist,我想处理没有child的元素的值。 在下面的代码中,我检查childnodes,从所有元素中都得到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>
XmlDocument XDoc=new XmlDocument();
Load(“d://avi.xml”);
XmlNodeList XList=XDoc.SelectNodes(“//*”);
foreach(XList中的xmlementxnode)
{
if(XNode.HasChildNodes==true)
{
WriteLine(“此节点有子节点”);
继续;
}
else Console.WriteLine(“此节点没有子节点”);
} 
校长3
另一个
校长31
111
nn

为此使用Linq到Xml怎么样

var xElem = XElement.Parse(xml);

var leafElements = xElem.Descendants()
                        .Where(e => !e.HasElements)
                        .ToList();

元素中的文本也是一个“节点”。你想要的是

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

或者,您可以循环查看子节点,看看其中是否有一个是元素。

旁注:请避免在公开共享的C代码中使用大写字母作为变量名,因为在C代码指南中不建议使用大写字母,许多人会将类似
XList
的内容作为某种类型的名称来阅读,并且会对虽然可能会阻止人们查看您的代码。带有孩子的节点也是元素,因此循环使用它们也没有帮助。感谢您的回答,我希望避免使用od linq,因为我还没有女性化的主题。@user1701492足够公平。。。但是你认为阅读上面的代码很难吗?