C# 如何在HTML中查找标记的xPath

C# 如何在HTML中查找标记的xPath,c#,html,xpath,xhtml,C#,Html,Xpath,Xhtml,请帮我解决这个问题:(, 我正在使用C#的BrowserControl,我有一个如下的html文档文件: <html> <title> news </title> <body> <br> <br/> <ul> <li>Coffee</li> <li>Tea <ul> <li>Black tea</li>

请帮我解决这个问题:(, 我正在使用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>

新闻


  • 咖啡
    • 红茶
    • 绿茶
  • 牛奶
  • 牛奶2

当我的鼠标点击红茶时,我如何获得这个标记的xPath?通过使用C#的BrowserControl,我只获得innerHTML或OuterHTML或鼠标当前位置的文本。

你不能用你拥有的代码通过编程获得这个标记的xPath。事实上,你必须自己构建xPath。但是如果你用这个,他应该是微不足道的

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

总之:

  • 点击鼠标读取节点,给出-

    <li>Black Tea</li>
    
  • 生成XPath查询:

    //Name[contains(., Contents)] 
    
    (在本例中,//li(,“红茶”))

  • 遍历每个父级以构建xpath查询,给出-ul/li、li/ul/li、ul/li/ul/li、body/ul/li/ul/li,最后-

    html/body/ul/li/ul/li
    
  • 因此,这里的关键是通过HTML Agility Pack以可遍历的方式获取文档,创建一个通用查询来获取节点,然后从节点构建完整查询


    这有帮助吗?

    您无法使用现有代码以编程方式获取此标记的XPath。事实上,您必须自己构建XPath。但是,如果您使用

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

    总之:

  • 点击鼠标读取节点,给出-

    <li>Black Tea</li>
    
  • 生成XPath查询:

    //Name[contains(., Contents)] 
    
    (在本例中,//li(,“红茶”))

  • 遍历每个父级以构建xpath查询,给出-ul/li、li/ul/li、ul/li/ul/li、body/ul/li/ul/li,最后-

    html/body/ul/li/ul/li
    
  • 因此,这里的关键是通过HTML Agility Pack以可遍历的方式获取文档,创建一个通用查询来获取节点,然后从节点构建完整查询

    这有用吗