【问题标题】:Get <p> between two <h2> (one of them without identifier) with Xpath使用 Xpath 在两个 <h2> (其中一个没有标识符)之间获取 <p>
【发布时间】:2019-04-09 00:06:21
【问题描述】:

我刚刚开始在 C# 中使用 HtmlAgilityPack,我必须使用 Xpath(我对此一无所知)。 我需要得到两个&lt;h2&gt;之间的所有p,我知道第一个&lt;h2&gt;中的文字,但另一个是动态的,我不知道包含什么。

<div>
     <h2><span>Location</span></h2>
     <p>Hi</p>
     <p>It's ok.</p>
     <p>Bye</p>
     <h2><span>{Dynamic text}</span></h2>
     <p>I do not know.</p>
     <h2><span>Summary</span></h2>
     <p>The end.</p>
</div>

我怎样才能在&lt;h2&gt; &gt; span['Location'] 和下一个&lt;h2&gt; 之间获取所有&lt;p&gt;(同样,我不知道包含什么)。

我测试过:

//p[preceding-sibling::h2[span='Location'] and following-sibling::h2]

//p[count(preceding-sibling::h2[span='Location'])=1]

两个测试结果相同:全部&lt;p&gt;

谢谢!

【问题讨论】:

    标签: c# html xpath


    【解决方案1】:

    这是一种看待它的方式:两个标记之间的内容与第一个标记之后的那些与第二个标记之前的那些之间的交集相同。对于 XPath 1.0 中的交集,我们使用 Kaysian 方法。你的情况

    /div/h2[span='Location']/following-sibling::h2[1]/preceding-sibling::*[
       count(.|/div/h2[span='Location']/following-sibling::*)
       = count(/div/h2[span='Location']/following-sibling::*)
    ]
    

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多