C# 如何获得;“真正的”;XmlNode的子节点,是否忽略空白节点?
显然,XmlNode.ChildNodes-list(在C#.Net中)不仅包含真正的子节点,还包含特殊的空白节点。因此,即使在最简单的情况下,当一个标记位于另一个标记内时,也可以得到parentNode.ChildNodes.Count==3。如何避开这个问题 已尝试:C# 如何获得;“真正的”;XmlNode的子节点,是否忽略空白节点?,c#,.net,xml,C#,.net,Xml,显然,XmlNode.ChildNodes-list(在C#.Net中)不仅包含真正的子节点,还包含特殊的空白节点。因此,即使在最简单的情况下,当一个标记位于另一个标记内时,也可以得到parentNode.ChildNodes.Count==3。如何避开这个问题 已尝试: xmlDocument.PreserveWhitespace = false; 此外: 文本节点是第一类子节点。我猜您只需要元素节点。你不能吗 node.SelectNodes("*") 或者你是说会导致root有三个子节
xmlDocument.PreserveWhitespace = false;
此外:
文本节点是第一类子节点。我猜您只需要元素节点。你不能吗
node.SelectNodes("*")
或者你是说
会导致root有三个子节点?为什么不使用下面的方法呢?您将无法从父节点中删除节点,因为在枚举时您正在修改集合,这是不允许的
foreach(XmlNode node in xmlDocument.SelectNodes("//*"))
{
if (node is XmlWhitespace)
continue;
else
{
// A real node
}
}
你可以做一些像这样简单的事情
xmlDocument.SelectNodes("//*).OfType<XmlElement>();
是的,SelectNodes(“*”)可以工作,但我仍然对ChildNodes数组在.net中完全不可用感到困惑。“无用”取决于你的需要。为什么不应该有一种方法来获取元素的所有子节点,包括文本、注释和PI节点?我想应该有两个数组,ChildNodes和AllChildNodes。默认列表与标记列表(xml)不对应是没有意义的。
xmlDocument.SelectNodes("//*).OfType<XmlElement>();
using System.Linq;