我们在 Word 中创建了一个绝对庞大的帮助文档,它被用来生成一个更大且笨拙的 HTM 文档。使用 C# 和这个库,我只想在我的应用程序的任何位置抓取并显示这个文件的一部分。部分是这样划分的:
<!--logical section starts here -->
<div>
<h1><span style='mso-spacerun:yes'></span><a name="_Toc325456104">Section A</a></h1>
</div>
<div> Lots of unnecessary markup for simple formatting... </div>
.....
<!--logical section ends here -->
<div>
<h1><span style='mso-spacerun:yes'></span><a name="_Toc325456104">Section B</a></h1>
</div>
从逻辑上讲,标签中有一个H1
带有部分名称的a
标签。我想从包含 div 的外部选择所有内容,直到遇到另一个h1
并排除该 div。
- 每个部分名称都位于一个
<a>
标签下,h1
其中有多个孩子(每个大约 6 个) - 逻辑部分标有注释
- 实际文档中不存在这些注释
我的尝试:
var startNode = helpDocument.DocumentNode.SelectSingleNode("//h1/a[contains(., '"+sectionName+"')]");
//go up one level from the a node to the h1 element
startNode=startNode.ParentNode;
//get the start index as the index of the div containing the h1 element
int startNodeIndex = startNode.ParentNode.ChildNodes.IndexOf(startNode);
//here I am not sure how to get the endNode location.
var endNode =?;
int endNodeIndex = endNode.ParentNode.ChildNodes.IndexOf(endNode);
//select everything from the start index to the end index
var nodes = startNode.ParentNode.ChildNodes.Where((n, index) => index >= startNodeIndex && index <= endNodeIndex).Select(n => n);
Sine 我无法找到这方面的文档,我不知道如何从我的起始节点到下一个 h1 元素。任何建议,将不胜感激。