私のXPathは少し錆びています...この単純なXMLファイルがあるとしましょう:
<?xml version="1.0" encoding="utf-8" ?>
<States xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<States>
<StateProvince name="ALABAMA" abbrev="AL" />
....
<StateProvince name="AMERICAN SAMOA" abbrev="AS" territory="true" />
</States>
</States>
単純なXPathクエリを実行して、すべての真の状態を解析したいと思います(したがって、territory = trueの状態をプルしないでください)。\StateProvince [@territory!= 'true']を試しましたが、ゼロになりました。他のバリエーションは失敗しているようです。これは単純なはずですが、必要なものが見つかりません。
助けていただければ幸いです。
必要な要素を選択する1つのXPath式:
/*/States/StateProvince[not(@territory='true')]
注意してくださいその人は//
ドキュメント全体(コンテキストノードをルートとするサブツリー)がスキャンされるため、可能な限り省略形。
上記のXPath式は//
省略形最初に提供されたXMLドキュメントの構造を考慮に入れます。
XMLドキュメントの構造が完全に不明な場合(およびXPath式が構造が不明な多くのXMLドキュメントで使用されることを意図している場合)のみ//
省略形が考慮されます。
あなたはとても近いです:
//StateProvince[not(@territory) or @territory != 'true']
あなたが望む結果を得るはずです。
これは機能するはずです:
//StateProvince[not(@territory='true')]