我正在使用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
联合字符时会出现“无效令牌”错误,如下所示:
. |
任何建议表示赞赏。