我有一个xml文档,在其中需要遍历作为父级直接后代的所有节点。
例如,我有以下xml文档
<root>
<node1>val1</node1>
<node2>val2</node2>
<nodes>
<nestedNode>nestedvalue</nestedNode>
</nodes>
</root>
我有以下代码可以获取所有元素:
XmlNodeList nodes = doc.SelectNodes("//*");
这将返回node1,node2和nestedNode。我只需要node1和node2并忽略任何嵌套值。
在此先感谢您的帮助。
答案 0 :(得分:5)
要选择作为根元素的子元素的元素,可以使用xpath:
/root/*
或一般而言:
/*/*
您不应遍历此处的所有后代(//...
),因为这将通过文档中的 all 元素。您将不得不添加其他过滤,这将使查询不必要地变得复杂:
//*[parent::*[not(parent::*)]]
但是,您要过滤掉没有其他子元素的元素,因此需要添加条件not(*)
:
/*/*[not(*)]