web-dev-qa-db-ja.com

特定の名前の子要素を除くすべての子要素を取得するXPath?

ドキュメントのすべての要素をターゲットにするにはどうすればよいですかexcept特定の要素名?

たとえば、terminate要素を除外します。これらはドキュメント全体で発生する可能性があります。

_ <root>
     <terminate attr="1" />
     <other>
         The brown fox jumps over the fence. 
         <terminate>
            <b>stuff</b>
         </terminate>
     </other>
 </root>
_

間違って使用しているため、not(..)演算子を使用してみましたが、成功しませんでした。

そして率直に言ってグーグルに「しない」ことを試みるのは大変です!

36
John K

次のxpathが機能するはずです

/root/*[not(self::terminate)] 

また、これでもできると思います

/root/*[not(name()='terminate')]
54
Jagmag

XPath 2.0を使用している場合は、

/root/* except /root/terminate

これはあなたが期待することをします。最初のシーケンスには存在するが2番目のシーケンスには存在しないノードに一致します。

XPath 2.0仕様-演算子を除く

2
Rudi Kershaw