特定の属性を持たないすべての要素でXPathを使用してフィルタリングする方法

StackOverflow https://stackoverflow.com/questions/812090

  •  03-07-2019
  •  | 
  •  

質問

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クエリを実行して、すべてのtrue状態を解析したい(したがって、territory = trueの状態は取り込まないでください)。 \ StateProvince [@territory!= 'true']を試しましたが、ゼロになりました。他のバリエーションは失敗しているようです。これは単純なように思えますが、必要なものが見つかりません。

ご協力ありがとうございます。

役に立ちましたか?

解決

必要な要素を選択する1つのXPath式

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / * / States / StateProvince [not(@ territory = 'true')]

注意事項 // の略語は、ドキュメント全体(サブツリーをコンテキストノード)スキャンする

上記のXPath式は、次の構造を考慮して、 // 略語の使用を回避します。最初に提供されたXMLドキュメント。

XMLドキュメントの構造が完全に不明な場合(およびXPath式が不明な構造を持つ多くのXMLドキュメントで使用されることを意図している場合)のみ、 // 略語を考慮する

他のヒント

非常に近い:

//StateProvince[not(@territory) or @territory != 'true']

必要な結果が得られるはずです。

これは動作するはずです:

//StateProvince[not(@territory='true')]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top