0

我一直在尝试使用 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);

( testHtmlNode) 变量为空。

我将如何获得其中的价值One

4

2 回答 2

1

在 SelectSingleNode 中使用 XPath:如果存在,则从 XML 中检索单个元素,您需要使用text()

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

此外,您需要删除tbody. 您的 html中没有tbody

于 2014-11-05T17:07:55.460 回答
1

如图所示,您的示例没有节点,tbody因此您的 XPath 将不返回任何节点(nullfor SelectSingleNode)。

使固定:

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
于 2014-11-05T17:14:13.187 回答