要素の特定の親を取得するための正しいxpath構文を探しています。例:
root
|- div
| |
| |----??? ---|
| | |-a [class=1]
| | |- text[ A TEXT I DON'T WANT]
| |
| |
| |
| |-text[THE TEXT]
|
|-div
| |-text[THE TEXT I DON'T WANT]
|
|-div
| |-text[THE TEXT I DON'T WANT]
「THE TEXT」というテキストを取得したいが、a [class=1]
同じdiv内。このようなもの:
//div//a[@class=1]/text[contains(.,'A TEXT')]/parent::*/parent::*.... <till div element> /text
XMLを考える
<?xml version = "1.0"?> <root> <foo id = "id1"> <foo id = "i2"> <baz /> </ foo> </ foo> </ root>
XPath式を使用して、bazから最も近い祖先 foo要素を見つけることができます。
// baz/ancestor :: foo [1]
Id "i2"のfoo要素ノードを選択します。
したがって、あなたの例では(私が正しいと理解している場合)、必要な「a」要素を取得したら、「/ ancestor :: div [1]」を追加することで、ツリーを最も近い祖先divに「バックアップ」できます表現。
使用:
/root/div[.//a[@class='1']]/text()
これは、値が'1'
でa
属性を持ち、そのclass
要素が子孫であるa
要素の子であるテキストノードを選択しますdiv
という名前の一番上の要素の子であるroot
要素の.