Как найти xPath тега в HTML - PullRequest
       6

Как найти xPath тега в HTML

1 голос
/ 09 февраля 2012

, пожалуйста, помогите мне решить эту проблему :(, Я работаю с BrowserControl C #, у меня есть 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>

когда моя мышь нажата на <li>Black tea</li>, как я могу получить xPath этого тега? Используя BrowserControl из C #, я просто получаю innerHTML или OuterHTML или текст текущей позиции мыши.

1 Ответ

1 голос
/ 09 февраля 2012

Вы не можете получить XPath этого тега программно с кодом, который у вас есть. На самом деле вам придется создавать XPath самостоятельно. Однако это должно быть тривиально, если вы используете HTML Agility Pack .

Пакет HTML Agility позволяет загружать документ HTML (который обычно НЕ является правильно сформированным XML), как если бы он был правильно сформированным XML, и использовать к нему запросы XPath. Затем вы можете загрузить документ в Agility Pack HTML, выполнить программный поиск узла (например, с помощью 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, создание общего запроса для получения узла, а затем создание полного запроса из узла.

Помогает ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...