获取两个特定兄弟节点之间的特定节点的计数

时间:2013-12-19 06:51:33

标签: html-agility-pack nodes xpath-1.0

我正在使用HtmlAgilityPack来获取<h2><h3>节点的过滤DOM并使用Xpath 1.0(本周从我的Xpath 1.0速成课程)我需要获得{{1兄弟<h3>之间的数字(数量不同)如下:

<h2>

当我通过已过滤的节点进行迭代(使用C#)时,我想要<div> <h2>heading 1</h2> <h3>sub 1.1</h3> <h3>sub 1.2</h3> <h2>heading 2</h2> <h3>sub 2.1</h3> <h2>heading 3</h2> .... </div> 之后和下一个<h3>之前的确切<h2>个数。当我使用以下内容时,我得到了所有<h2>的结果。

<h3>

对于上面的节点结构,希望代码行的结果为:

int countH3 = n.SelectNodes("./preceding-sibling::h2[2]/following-sibling::h2[3]/preceding-sibling::h3").Count(); //the [position] is set dynamically

但它是:

countH3 = 1

我发现了许多关于“兄弟节点之间的兄弟节点”的类似SO问题,并且不得不感谢@LarsH在countH3 = 3 返回所有/preceding::h3的另一个问题中对他的评论,这有助于解释这个问题。我想我可能需要使用Kayessian节点集交集方法,但是当我包含<h3>'s联合字符时会出现“无效令牌”错误,如下所示:

. |

任何建议表示赞赏。

0 个答案:

没有答案
相关问题