基于具有特定属性的子级和/或孙级的父级XML选择

时间:2013-02-28 15:48:08

标签: xml search xpath vb6

我正在搜索一个XPath字符串(对于VBA Excel),它可以查找特定级别上的所有节点,并且仅在它们具有特定(大)子节点时才返回。无论这种嵌套是多么“深刻”。关系:我不知道一个特定的孩子嵌套有多深,因此我无法建立固定的路径。

如果是以下示例。我正在搜索直接位于根目录下的所有节点,并且其中包含任何包含名称“Test”的子节点,但此子节点可能不包含函数“10”。但是功能'10'可以在更高级别上使用


XML STRING:

<Program>
   <AA name="1" function="01"/>
   <BB name="2" function="10">
      <CC name="Test" function="01"/>
   </BB>
   <DD name="Test" function="05"/>
   <EE name="3" function="01">
      <FF name="4" function="05">
         <GG name="Test" function="10"/>
      </FF>
   </EE>
</Program> 


需要选择:

Item(0) = <BB name="2" function="10">
Item(1) = <DD name="Test" function="05">


以下XPath表达式为Program下的节点提供了名为'Test'的节点

xmlDoc.selectNodes("/Program/*[.//@name='Test']")


如何根据“功能”

过滤孩子

1 个答案:

答案 0 :(得分:0)

你很亲密!不应该轻易放弃!

//*[@name='Test' and @function !='10']

或直接来自<Program>/Program//*[@name='Test' and @function !='10']

<强>更新

/Program/*[@name='Test' and @function !='10' or .//*[@name='Test' and @function!='10']]