如何在html敏捷包中获取带有祖先xpath的最后一个父节点

时间:2018-10-17 10:35:26

标签: c# xpath html-agility-pack

如何在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-而不是作为手动硬编码值。例如,基于最后一个元素,我需要获取具有祖先路径的父项。

1 个答案:

答案 0 :(得分:1)

幸运的是,Html-Agility-Pack带有XPath属性和一些获取所需内容的方法。

因此,以某种方式选择一个HtmlNode,移动到父节点并检索祖先XPath(通过Linq从第一个/最后一个):

htmlNode.ParentNode.Ancestors().FirstOrDefault().XPath

要获得第一个祖先,最后一个像这样

htmlNode.ParentNode.Ancestors().LastOrDefault().XPath

或遍历祖先。