【问题标题】:xpath: how to select multiple tag types in a following or preceding siblings?xpath:如何在后面或前面的兄弟姐妹中选择多个标签类型?
【发布时间】:2015-10-20 21:43:09
【问题描述】:

例如,您想选择所有标题标签,无论是h1,还是h2,或h3,或其他标签。

你是做什么的?

试过了:

.//following-sibling::h*

.//following-sibling::[h3|h4]

.//following-sibling::(h3|h4)

.//(following-sibling::h3|following-sibling::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。

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

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

【问题讨论】:

  • 发布您想要获得的 XML 示例和结果。你的解决方案可能根本不好。
  • 你的问题不清楚!!你说的for follow-sibling是什么意思??
  • .// 之后使用following-sibling 很奇怪。这不是一个错误,但这是一件非常奇怪的事情。它基本上选择不是其父节点的第一个子节点的每个后代或自我节点。

标签: html xpath xpath-2.0 domxpath


【解决方案1】:

我一般会用

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

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

【讨论】:

  • 我们怎样才能只得到第一个 h3 跟随兄弟 p 的文本?谁能帮帮我
【解决方案2】:

我在这个问题上很挣扎,因此想发布这个问题和答案来帮助别人。

回答: **

.//following-sibling::node()[name()="h3" or name()="h4"]

**

不客气。

【讨论】:

  • 使用[name()='x'] 时要注意命名空间的影响。一般最好写following-sibling::*[self::h3|self::h4]
  • 感谢您的警告。您的提示有效,比我的要好得多,向您致敬!请回答(不是评论),以便我们投票。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
相关资源
最近更新 更多