如何在c#中检查xmlnode的innertext或value?
我创建了xmlnodelist,我想处理没有child的元素的值。 在下面的代码中,我检查childnodes,从所有元素中都得到true,甚至 那些没有孩子的。 如何拾取树中的最后一个元素并处理值的大小如何在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
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足够公平。。。但是你认为阅读上面的代码很难吗?