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

How to get last parent node with ancestors xpath in 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,而不是作为手动硬编码值。例如,基于最后一个元素,我需要获取具有祖先路径的父元素。

幸运的是,Html-Agility-Pack 附带了一个 XPath 属性 和一些方法来获得您想要的东西。

因此,以某种方式 select 一个 Html 节点,移动到父节点并检索祖先 XPath(通过 Linq 从 first/last),如下所示:

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

要得到始祖,末祖是这样的

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

或遍历祖先。