html - Xpath 查找特定节点之后的所有元素

标签 html xpath

我有一个特定的 html,如下所示,我观察到在所有情况下都会出现一个特定的 h2 节点。

<div id='myDiv'> 
<..other elements..>
  <h2>Locator</h2>  
        <h3>Header 1 </h3>  
        <p>Paragraph 1.1</p>    
        <h3>Header 2 </h3>  
        <p>Paragraph 2.1</p>  
        <p>Paragraph 2.2.</p>  
        <p>Paragraph 2.3.</p> 
        <h4> test header 4</h4>
</div> 

我想要特定节点之后的所有标记,html 格式如下。 正如你所看到的,我可以通过应用 xpath //div[@id='myDiv']/h2[contains(.,"Locator")] 来定位 h2 标签,但问题是找到所有元素在 h2 标签后面的 div 内。(我不确定这个 h2 标签后面可以有什么类型的标签)。为了更清楚,选择以下节点的 xpath 是什么

<h3>Header 1 </h3>  
<p>Paragraph 1.1</p>    
<h3>Header 2 </h3>  
<p>Paragraph 2.1</p>  
<p>Paragraph 2.2.</p>  
<p>Paragraph 2.3.</p> 
<h4> test header 4</h4>

最佳答案

*[preceding-sibling::h2] 表示 h2 之后的所有元素。因此,在选择器中添加 contains 后,它会像这样

//div[@id='myDiv']/*[preceding-sibling::h2[contains(text(),'Locator')]]

参见Demo Here 。单击“测试”按钮您将得到结果

关于html - Xpath 查找特定节点之后的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40881309/

相关文章:

php - 如何将表单中复选框的值保存到单个 MySQL 字段中?

xml - XSLT - XML中每个元素中每个属性的总和与for-each?

xml - 如何删除节点的属性 (MSXML)

html - 下拉菜单位于图像下方

Python - 无法使用 Beautiful Soup 或 lxml xpath 从网页表中检索数据

xslt - 为元素的每个值的第一个和最后一次出现生成上下文数据

c# - 使用SelectSingleNode和Xpath时忽略空白

javascript - 如何增加html输入名称

javascript - 使用javascript绘制动画饼图

html - 如何使用 twitter bootstrap 格式化背景颜色?