如何用XPath表达式选取第一个span与后续br标签间的文本?
如何用XPath选取第一个
<span>和紧随其后<br>之间的文本? 对应的HTML结构如下:
<div> <span>abc</span> defg <br> hijkl <br> mnop <span>qrs</span> tuvw <br> xyz </div>
可以用以下XPath表达式精准选中defg:
//div/span[1]/following-sibling::text()[1][following-sibling::br[1]]
表达式解释:
//div/span[1]:定位到<div>下的第一个<span>元素/following-sibling::text()[1]:选取该<span>之后的第一个文本节点(也就是defg所在的文本节点)[following-sibling::br[1]]:添加过滤条件,确保这个文本节点的第一个后续兄弟节点是<br>,避免匹配到其他无关文本
也可以换一种更直接的写法,直接筛选<div>下符合条件的文本节点:
//div/text()[preceding-sibling::span[1] and following-sibling::br[1]]
这个表达式的逻辑是:选取<div>下的文本节点,要求它的前一个兄弟节点是第一个<span>,且后一个兄弟节点是<br>,同样能精准定位到defg。
内容的提问来源于stack exchange,提问作者Lee Vannes
相关产品推荐
相关产品推荐

