0

特定のレベルのすべてのノードを検索でき、特定の (グランド) 子ノードがある場合にのみ返される XPath 文字列 (VBA Excel 用) を探しています。これがどれほど「深く」ネストされているかに関係なく。Relationale: 特定の子がどのくらいネストされているかがわからないため、固定パスを作成できません。

以下の例の場合。ルート '' の直下にあり、'Test' という名前を含む子を持つすべてのノードを検索していますが、この子には関数 '10' が含まれていない可能性があります。ただし、機能「10」はより高いレベルで使用できます


XML 文字列:

<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']")


「関数」に基づいて子をフィルタリングするにはどうすればよいですか

4

1 に答える 1

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']]
于 2013-02-28T15:57:27.450 に答える