C#判断xml节点下是不是有子节点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#判断xml节点下是不是有子节点相关的知识,希望对你有一定的参考价值。

<?xml version="1.0" encoding="GBK"?>
<body>
<Order>
<Name>546</Name>
</Order>
<Result>asb</Result>
</body>
</ysepay>

上面是要xml解析的例子

下面是我解析的代码
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(strXML);
XmlElement xmlElem = xmlDoc.DocumentElement;//获取根节点
XmlNodeList bodyNode = xmlElem.GetElementsByTagName("body");//取得节点名为body的XmlNode集合
XmlNodeList body = xmlElem.SelectNodes("body");
foreach (XmlNode node in bodyNode)

XmlNodeList childList = node.ChildNodes; //取得body下的子节点集合
foreach (XmlNode childnode in childList)

int result = childnode.ChildNodes.Count;
XmlNodeList contentList = childnode.ChildNodes;



其中int result = childnode.ChildNodes.Count;循环到Result节点的时候返回值还是1,他把asb这个值当做一个子节点计算。使用childnode.HasChildNodes也是返回true。为什么这样解析会把asb这个节点值当做一个子节点?我要如何判断该节点下是否有子节点

参考技术A XmlNodeList bodyNode = xmlElem.GetElementsByTagName("body");
if (bodyNode.Count > 0)
参考技术B 可以用NodeType过滤追问

Order节点和Result节点的NodeType都是Element,这无法判断过滤啊

本回答被提问者采纳

C#读取xml

        //初始化一个xml对象
        XmlDocument xml = new XmlDocument();
        //加载xml文件
        xml.Load("文件路径");
//xml.LoadXml("xml内容"); //读取指定的节点 XmlNode xmlNode = xml.SelectSingleNode("/节点名"); //判断节点下是否有子节点 xmlNode.HasChildNodes; //读取节点下的所有子节点 XmlNodeList xmlNodeList = xmlNode.ChildNodes; //读取同名同级多个节点列表 XmlNodeList xmlNodeList = xml.SelectNodes("/root/节点名"); //读取节点的属性string attribute = xmlNode.Attributes["属性名"].Value; //读取节点的文本string value = xmlNode.InnerText; //创建一个新的节点 XmlNode xmlNode = xml.CreateElement("节点名"); //保存xml文件 xml.Save("文件路径");

以上是关于C#判断xml节点下是不是有子节点的主要内容,如果未能解决你的问题,请参考以下文章

计算特定XML节点c#的子节点数[重复]

C#读取xml

ztree判断父节点下是不是有子节点?

ztree要怎么判断该节点下面是不是有子节点

ztree要怎么判断该节点下面是不是有子节点

easyui tree判断是不是有子节点