【问题标题】:How to find xPath of a tag in HTML如何在 HTML 中查找标签的 xPath
【发布时间】:2023-12-23 18:27:01
【问题描述】:

请帮我解决这个问题:(, 我正在使用 C# 的 BrowserControl,我有一个这样的 html 文档文件:

<html>
<title>
news
</title>
<body>
<br>
<br/>
<ul>
  <li>Coffee</li>
  <li>Tea
    <ul>
      <li>Black tea</li>
      <li>Green tea</li>
    </ul>
  </li><li>Milk</li>
  <li>Milk2</li>
</ul>
</body>
</html>

当我的鼠标点击&lt;li&gt;Black tea&lt;/li&gt; 时,我怎样才能得到这个标签的xPath?通过使用 C# 的 BrowserControl,我只需获取鼠标当前位置的 innerHTML 或 OuterHTML 或 Text。

【问题讨论】:

    标签: c# html xpath xhtml


    【解决方案1】:

    您无法使用您拥有的代码以编程方式获取此标记的 XPath。实际上,您必须自己构建 XPath。但是,如果您使用 HTML Agility Pack,这应该是微不足道的。

    HTML Agility 包允许您加载 HTML 文档(通常不是格式良好的 XML),就好像它是正确格式的 XML 一样,并在其上使用 XPath 查询。然后您可以做的是在 HTML Agility Pack 中加载文档,以编程方式搜索节点(例如,使用 XPath 搜索包含某个字符串的元素),然后当您从搜索中获得节点时,您可以构建一个XPath 通过遍历每个父级。

    完全是这样:

    1. 鼠标点击读取节点,给出 -

      <li>Black Tea</li>
      
    2. 解析内容和节点名称 - 给出

      Contents = Black Tea, Name = li
      
    3. 构建 XPath 查询:

      //Name[contains(., Contents)] 
      

      (在这种情况下, //li(., '红茶') )

    4. 遍历每个父节点,构建一个 xpath 查询,给出 - ul/li,然后是 li/ul/li,然后是 ul/li/ul/li,然后是 body/ul/li/ul/li,最后是 -

      html/body/ul/li/ul/li
      

    所以这里的关键是通过 HTML Agility Pack 以可遍历的方式获取文档,创建通用查询来获取节点,然后从节点构建完整查询。

    这有帮助吗?

    【讨论】:

      最近更新 更多