【发布时间】:2018-07-13 21:23:34
【问题描述】:
我想区分这两种情况 - 但 HasChildNode 在这两种情况下都返回“true”,并且在这两种情况下 childNode 的数量都是 1。
<eventid>45072</eventid>
<titles>
<title>kabel eins late news</title>
</titles>
这是我的示例代码和输出。
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
XmlNodeList xnList = doc.SelectNodes("/epg/programme");
foreach (XmlNode n in xnList) {
foreach (XmlNode n1 in n.ChildNodes) {
if (n1.HasChildNodes) {
AppendText($"n1 has {n1.ChildNodes.Count} ChildNodes");
foreach (XmlNode n2 in n1.ChildNodes) {
Append(41,n2.Name, n2.InnerText);
}
}
else {
// this will never called
Append(46,n1.Name, n1.InnerText);
}
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<epg Ver="1">
<programme>
<eventid>45072</eventid>
<titles>
<title>kabel eins late news</title>
</titles>
</programme>
</epg>
输出:
n1 有 1 个子节点
41:#text:45072
n1 有 1 个子节点
41:title:kabel eins 迟到的消息
【问题讨论】:
-
元素内的文本是一个节点,属性等也是如此。如果您更新到网络较新的 XDocument,XElement 您可以使用 XElement.HasElements。 msdn.microsoft.com/en-us/library/… 或者您可以枚举 ChildNodes 并查看是否有 Elements。
-
@DavidBrowne-Microsoft 这应该是一个答案,而不是评论。
标签: c# xml xmldocument