簡體   English   中英

DOMXPath根據先前的兄弟值獲取兄弟姐妹

[英]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]

基本查詢是查找包含AAAbar ,然后導航到相應的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM