选择包含xpath标记的文本

问题描述 投票:0回答:1

我需要选择包含带xpath的<a>标签的文本,但我无法找到正确的方法来执行此操作。结果应该是“图片标题和链接”。并且应该保留锚链接。

<p class="caption"><img src="..."> 
Image Caption <a href="...">And A Link</a>.
</p>

我试过的最后一个表达是,

//*[preceding-sibling::img]

但无论我怎么做,我要么只选择<a>标签的外部或文本。

html xpath
1个回答
0
投票

你不能选择那里没有的东西。 "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 ')]
© www.soinside.com 2019 - 2024. All rights reserved.