在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