xpath:如何在后续或前面的兄弟姐妹中选择多个标签类型?

时间:2015-10-20 21:43:10

标签: html xpath xpath-2.0 domxpath

例如,您想要选择所有标题标签,无论是在h1,h2还是h3,还是其他标签都可以用于跟随兄弟。

你做什么?

试过:

  

.//以下同胞:: H *

     

.//以下同胞:: [H3 | H4]

     

.//以下同胞::( H3 | H4)

     

.//(以下同胞:: H3 |以下同胞:: H4)

他们都没有工作......

更新

这是我的html尝试搜索:

<h3 class='title'>title1</h3>
<p> paragraph 1<p>
<p> paragraph 2<p>
<p> paragraph 3<p>
<h3 class='title'>title1</h3>
<p> paragraph 1<p>
<p> paragraph 2<p>
<h4 class='title'>title1</h4>
<p> paragraph 1<p>
<p> paragraph 2<p>
<p> paragraph 3<p>
<p> paragraph 4<p>
<h2 class='title'>title1</h2>
<p> paragraph 1<p>
<p> paragraph 2<p>
<p> paragraph 3<p>

所以每个标题之间可能有2-5个段落,标题可以是h2,h3或h4。

给定一个标题元素,收集所有段落,直到下一个标题。

(我的方法是找到下一个标题并返回查找所有段落。)

2 个答案:

答案 0 :(得分:3)

我一般会用

following-sibling::*[self::h3|self::h4]

使用自轴通常比测试name()更可取,因为它可以避免名称空间复杂化,并且处理器可能更容易优化。

答案 1 :(得分:0)

我在这个问题上非常挣扎,所以想发布这个问题并回答其他人的帮助。

答案: **

  

.//以下同胞::节点()[名称()=&#34; H3&#34;或name()=&#34; h4&#34;]

**

欢迎你。