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