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这个节点值当做一个子节点?我要如何判断该节点下是否有子节点
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节点下是不是有子节点的主要内容,如果未能解决你的问题,请参考以下文章