如何使用xpath选择具有X作为后代的节点

nim*_*cap 13 xml xpath

考虑以下示例:

<root>
   <instruments>
      <flute>
         <baz>bazik</baz>
      </flute>
      <guitar>
         <deep>
            <baz>more bazik</baz>
         </deep>
      </guitar>
      <drum>
         <foo>fooled</foo>
      </drum>
   </instruments>
</root>
Run Code Online (Sandbox Code Playgroud)

我想选择flute,guitar因为它们都包含baz作为后代节点.我怎样才能做到这一点?

vtd*_*hor 20

关键是使用谓词 [descendant::baz]

所以表达可以

/root/instruments/*[descendant::baz]
Run Code Online (Sandbox Code Playgroud)

  • 或者,简而言之:`/ root/instruments /*[.// baz]` (6认同)