如何在HTML Agility Pack(HAP)的HTML文档中获取带有祖先XPath的最后一个父节点?例如,我有一个HTML文档,请检查以下内容:
<html>
<body>
<div>
<div>
<div>
<a>
<h3>
</h3>
</a>
</div>
</div>
</div>
</body>
</html>
我需要获取HAP中的最后一个父节点及其祖先路径。 例如,上述HTML文档的XPath是
/html/body/div/div[1]/div[2]/a/h3
预期xpath将为
/html/body/div/div[1]/div[2]
请注意,我需要动态获取预期的Xpath-而不是作为手动硬编码值。例如,基于最后一个元素,我需要获取具有祖先路径的父项。
答案 0 :(得分:1)
幸运的是,Html-Agility-Pack带有XPath属性和一些获取所需内容的方法。
因此,以某种方式选择一个HtmlNode,移动到父节点并检索祖先XPath(通过Linq从第一个/最后一个):
htmlNode.ParentNode.Ancestors().FirstOrDefault().XPath
要获得第一个祖先,最后一个像这样
htmlNode.ParentNode.Ancestors().LastOrDefault().XPath
或遍历祖先。