[英]DOMXPath get sibling depending on previous sibling value
假設我有這個:
<foo>
<bar>CCC</bar>
<baz>sometexthere</baz>
</foo>
<foo>
<bar>AAA</bar>
<baz>sometext</baz>
</foo>
<foo>
<bar>DDD</bar>
<baz>something</baz>
</foo>
現在,我想得到baz值,它正好在bar之后,值為AAA (!但只有AAA值!)。 我不知道我有多少“foo”,所以我不能寫出類似的東西:
$element->item(0) // I don't know the exact number
那么我怎樣才能得到baz的值,它在具有特定值的bar之后呢?
(對於上面的例子,我想得到一些文字,因為它來自AAA )
根據您希望如何執行匹配,有不同的方法來編寫匹配的XPath。 以下是一些選項:
找到一個baz,其中還有一個<bar>AAA</bar>
,不一定在它之前(它可能會在之后,或者之間可能還有其他元素):
foo[bar = 'AAA']/baz
找到以<bar>AAA</bar>
開頭的baz:
foo/baz[preceding-sibling::bar = 'AAA']
foo/bar[. = 'AAA']/following-sibling::baz
找到一個緊接着 <bar>AAA</bar>
的baz:
foo/baz[preceding-sibling::*[1]/self::bar = 'AAA']
foo/bar[. = 'AAA']/following-sibling::*[1]/self::baz
找到<bar>AAA</bar>
並返回緊跟其后的任何元素,不一定命名為baz。
foo/bar[. = 'AAA']/following-sibling::*[1]
基本查詢是查找包含AAA
的bar
,然后導航到相應的baz
元素。
//foo/bar[.="AAA"]/../baz
或者,根據相關bar
找到所有baz
和過濾器。
//foo/baz[../bar = "AAA"]
或者, baz
內小號foo
小號含有bar
具有AAA
。
//foo[bar="AAA"]/baz
如果您不熟悉XPath表達式,請將XML路徑語言(XPath)添加為書簽以供日后使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.