读取XMLDocument节点而不读取C#中的子节点

时间:2009-07-07 11:51:53

标签: c# xml

示例XML

<A>
   <B>
      <B1/>

      <B2/>
      <B3/>
      <B4/>
      <B5/>
   </B>
   <C>
      <C1/>
      <C2/>
      <C3/>
      <C4/>
      <C5/>
   </C>
</A>

查询: C# 当我读取A的子节点时,它返回节点B&amp; C与他们的子节点。

有没有可能让我只能得到B&amp; C没有各自的子节点

我需要用这种类型的xml和amp填充树。 xml文件非常大。所以我需要在扩展任何节点时加载子节点

要求 假设我尝试扩展A节点,我只想要B&amp; C,

如果我扩展B,那么我想要B1到B5

4 个答案:

答案 0 :(得分:5)

使用XmlReader。 XmlDocument设计必须将整个Xml文档加载到内存中。

答案 1 :(得分:1)

如果您使用java,则可以实现SAX Handler构建DOM并忽略子项。

答案 2 :(得分:1)

这是一个措辞严厉的问题,所以我不完全确定你要做什么,但如果你只想要根(A)的所有子节点,那么就像这样使用带有XPath的XmlDocument:

XmlDocument doc = new XmlDocument();
doc.Load(xmlFile);
XmlNodeList nodes = doc.SelectNodes("/A/*");
foreach(XmlNode node in nodes){
   //DO STUFF
}

答案 3 :(得分:0)

如果我理解正确的问题,你需要让孩子接收节点而不要让他们的孩子。这可以通过xquery来完成 (子:: *)

所以,如果你在A节点中应用它,它将给出B和C.如果你在B中应用它,那么它将给出B1-B5。