PHP中使用XPath提取XML指定文本“Hongrie”失败,求正确表达式
如何用XPath提取指定位置的“Hongrie”文本?
目标HTML代码:
<img src='something' width='16' height='16' alt='Icone Pays de production' title='Pays de production' class='base' > <strong>Pays de production :</strong> <a href='index.php?p=pays&pays=96' class='no'>Hongrie</a> <br>
问题分析:
你之前的XPath表达式//img[contains(@title, 'Pays de production')]//strong//a失效的核心原因是:img、strong、a是同级节点(共享同一个父节点),而非后代关系。//是查找后代节点的语法,自然找不到同级的strong和a。
正确的XPath表达式:
可以通过以下几种方式定位到目标文本:
- 基于目标
img的兄弟节点定位:
//img[contains(@title, 'Pays de production')]/following-sibling::a[1]/text()
following-sibling::用于选取当前节点之后的同级节点[1]确保选取第一个同级的a元素(避免匹配其他无关a标签)/text()直接提取标签内的文本内容
- 基于
strong的文本内容定位:
如果你更倾向于通过strong的文本标识来定位,也可以用:
//strong[text()='Pays de production :']/following-sibling::a[1]/text()
验证说明:
以上两种表达式都能精准提取到Hongrie文本,你可以根据实际HTML结构的稳定性选择更合适的写法。
内容的提问来源于stack exchange,提问作者Julien Machin
相关产品推荐
相关产品推荐

