我有一个 xml 文档,我需要在其中迭代所有作为父节点的直接后代的节点。
例如我有以下xml文档
<root>
<node1>val1</node1>
<node2>val2</node2>
<nodes>
<nestedNode>nestedvalue</nestedNode>
</nodes>
</root>
我有以下代码获取所有元素:
XmlNodeList nodes = doc.SelectNodes("//*");
这将返回 node1、node2 和 nestedNode。我想要的只是 node1 和 node2 并忽略任何嵌套值。
在此先感谢您的帮助。
最佳答案
要选择作为根元素的子元素的元素,您可以使用 xpath:
/root/*
或者一般来说:
/*/*
您不应在此处遍历所有后代 (//...
),因为这将遍历文档中的所有 元素。您将不得不添加额外的过滤,这会使查询不必要地复杂化:
//*[parent::*[not(parent::*)]]
但是,你想过滤掉没有其他子元素的元素,所以你需要添加条件not(*)
:
/*/*[not(*)]
关于C#获取xml文档中的所有节点但忽略嵌套节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677413/