xpath
特定のテキストを含む要素の検索
サーチ…
特定のテキストを含むすべての要素を検索する
次のXMLを想像してみてください。
<root>
<element>hello</element>
<another>
hello
</another>
<example>Hello, <nested> I am an example </nested>.</example>
</root>
次のXPath式は次のとおりです。
//*[text() = 'hello']
<element>hello</element>要素を返しますが、 <another>要素は返しません。これは、 <another>要素にhelloテキストを囲む空白が含まれているためです。
<element>と<another>両方を取得するには、 <element>使用できます。
//*[normalize-space(text()) = 'hello']
または
//*[normalize-space() = 'hello']
これは比較を行う前に周囲の空白をトリムします。ここでは、 normalize-spaceを使用しているときにtext()ノード指定子がオプションであることがわかりtext() 。
特定のテキストを含む要素を検索するには、 contains関数を使用しcontains 。次の式は<example>要素を返します。
//example[contains(text(), 'Hello')]
複数の子/テキストノードにまたがるテキストを検索する場合は、使用できます. text()代わりに。 .要素のテキストコンテンツ全体とその子要素を指します。
//example[. = 'Hello, I am an example .']
複数のテキストノードを表示するには、次のコマンドを使用します。
//example//text()
それは返すでしょう:
- "こんにちは、 "
- "私は例です"
- ""
また、要素のテキストコンテンツ全体をより明確に見るために、関数stringを使用することができます:
string(//example[1])
あるいは単に
string(//example)
こんにちは、私は例です。
後者は、ノードセットがstringような関数に渡された場合、XPath 1.0はそのノードセット内の最初のノードを(ドキュメント順で)見て残りを無視するため、後者は機能します。
そう:
string(/root/*)
返すだろう:
こんにちは
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow