在PHP中,我想要獲得包含給定文本的所有DOMElement
。用特定文本PHP/XPath獲取DOMElement
我得到DOMText
當$xpath->query("//text()[contains(., 'My String')]")
,但我得到DOMElement
代替哪個查詢?
在PHP中,我想要獲得包含給定文本的所有DOMElement
。用特定文本PHP/XPath獲取DOMElement
我得到DOMText
當$xpath->query("//text()[contains(., 'My String')]")
,但我得到DOMElement
代替哪個查詢?
使用:
(//*[text()
[contains(., 'My String')]
]
)[1]
這將選擇具有文本子節點包含字符串"My String"
XML文檔中的第一個元素。
如果可以保證只有一個這樣的元素的存在,上述表達式可以簡化爲:
//*[text()
[contains(., 'My String')]
]
如果你正在尋找的元素被保證具有隻是一個單一的文本節點的孩子,這表達式可以簡化爲:
(//*[contains(., 'My String')])[1]
分別爲:
//*[contains(., 'My String')]
嘗試像//text()[contains(., 'My String')]/..
這樣的路徑。
馬丁,通常有一個不包含反轉軸的表達式。 – 2011-12-31 18:33:33
正是我需要的,謝謝! – TMichel 2012-01-11 18:59:46
@TMichel:不客氣。請考慮接受這個答案(點擊答案旁邊的複選標記)。 – 2012-01-11 19:20:28