我正在搜索一个XPath字符串(对于VBA Excel),它可以查找特定级别上的所有节点,并且仅在它们具有特定(大)子节点时才返回 . 无论这种嵌套是多么“深刻” . 关系:我不知道一个特定的孩子嵌套有多深,因此我无法 Build 固定的路径 .
如果是以下示例 . 我正在搜索直接位于根目录下的所有节点,并且其中包含任何包含名称“Test”的子节点
XML字符串:
<Program>
<AA name="1"/>
<BB name="2">
<CC name="Test"/>
</BB>
<DD name="Test"/>
<EE name="3">
<FF name="4">
<GG name="Test"/>
</FF>
</EE>
</Program>
必要的选择:
Item(0) = <BB name="2">
Item(1) = <DD name="Test">
Item(2) = <EE name="3">
以下XPath表达式为 Program
下的节点提供了
xmlDoc.selectNodes("/Program/*")
以下XPath表达式为包含名称 Test
的节点提供
xmlDoc.selectNodes("//*[@name="Test"]")
What I need is not a 'union' of the 2 paths but a 'overlap'. Does anybody know how to make this?
1 回答
以下XPath表达式选择您需要的内容:
它获取
Program
的所有直接子项,然后选择具有'Test'
属性值'Test'
或包含后代的那些子项 .这个表达式的更详细,也许更易读的版本是:
所以你的VBA代码看起来像这样: