我刚刚开始在C#中使用HtmlAgilityPack,我必须使用Xpath(我对此一无所知)。我需要得到两个<h2>
之间的所有p,我知道第一个<h2>
中的文本,但另一个是动态的,我不知道包含什么。
<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>
我怎么能把<p>
和下一个<h2> > span['Location']
之间的所有<h2>
(再次,我不知道包含什么)。
我测试过:
//p[preceding-sibling::h2[span='Location'] and following-sibling::h2]
//p[count(preceding-sibling::h2[span='Location'])=1]
两个测试结果相同:所有<p>
。
谢谢!
这是查看它的一种方式:两个标记之间的内容与第一个标记之后的标记和第二个标记之前的标记之间的交集相同。对于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::*)
]