C#获取xml文档中的所有节点,但忽略嵌套节点

Max*_*eue 3 c# xml

我有一个xml文档,我需要遍历所有父节点的直接后代节点.

例如,我有以下xml文档

<root>
  <node1>val1</node1>
  <node2>val2</node2>
  <nodes>
    <nestedNode>nestedvalue</nestedNode>
  </nodes>
</root>
Run Code Online (Sandbox Code Playgroud)

我有以下代码,它为我提供了所有元素:

XmlNodeList nodes = doc.SelectNodes("//*");
Run Code Online (Sandbox Code Playgroud)

这将返回node1,node2和nestedNode.我想要的只是node1和node2,并忽略任何嵌套值.

在此先感谢您的帮助.

Jef*_*ado 5

要选择作为根元素的子元素的元素,您将使用xpath:

/root/*
Run Code Online (Sandbox Code Playgroud)

或者一般来说:

/*/*
Run Code Online (Sandbox Code Playgroud)

你不应该遍历所有后代here(//...),因为它将遍历文档中的所有元素.您将不得不添加额外的过滤,这将使查询不必要地复杂化:

//*[parent::*[not(parent::*)]]
Run Code Online (Sandbox Code Playgroud)

但是,您希望过滤掉没有其他子元素的元素,因此您需要添加条件not(*):

/*/*[not(*)]
Run Code Online (Sandbox Code Playgroud)