htmlagilitypack с помощью SelectSingleNode

c# html-agility-pack selectsinglenode xpath

Вопрос

Я пытаюсь получить значение ниже, используя HtmlAgilityPack, но без успеха. Я использую SelectSingleNode.

Вот мой html.

<html>
<body>
    <table>
        <tr><td>One</td></tr>       
    </table>
</body>
</html>

И ниже - код.

HtmlDocument doc = new HtmlDocument();
doc.Load("C:\\test.html");

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tbody/tr/td");
Console.WriteLine(test.InnerHtml);

Переменная test (HtmlNode) имеет значение null.

Как я получу значение, в котором находится « One .

Принятый ответ

Как показано, ваш образец не имеет узла tbody поэтому ваш XPath не будет возвращать узлы ( null для SelectSingleNode ).

Fix:

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td");

Отладчик: медленно создавайте XPath и проверяйте каждый результат / дочерние узлы:

     "/html/body/table/" - some children
     "/html/body/table/tbody/"  - null
     "/html/body/table/tr/" - some children
     "/html/body/table/tr/td" - score

Популярные ответы

Из использования XPath в SelectSingleNode: извлечение отдельного элемента из XML, если он присутствует, вам нужно использовать text() :

var test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td/text()");

Кроме того, вам нужно удалить tbody . Там нет tbody в вашем HTML.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow