我需要选择包含带xpath的<a>
标签的文本,但我无法找到正确的方法来执行此操作。结果应该是“图片标题和链接”。并且应该保留锚链接。
<p class="caption"><img src="...">
Image Caption <a href="...">And A Link</a>.
</p>
我试过的最后一个表达是,
//*[preceding-sibling::img]
但无论我怎么做,我要么只选择<a>
标签的外部或文本。
你不能选择那里没有的东西。 "Image Caption And A Link."
在此HTML中不存在。
<p class="caption"><img src="...">
Image Caption <a href="...">And A Link</a>.
</p>
你能得到的最好的是一个单独的节点列表 - 看起来你想要p.caption
中的所有节点,除非它是img
。这可行:
//p[contains(@class, 'caption')]/node()[not(self::img)]
并返回三个节点:
['\nImage Caption ', <a href="...">And A Link</a>, '.\n']
为了防止由于部分匹配而在CSS类中匹配误报,请使用
//p[contains(concat(' ', @class, ' '), ' caption ')]