我一直试图使用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)变量为空。
我如何获得One
内的值。
答案 0 :(得分:1)
从Using XPath in SelectSingleNode: Retrieving individual element from XML if it's present开始,您需要使用text()
:
var test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td/text()");
此外,您需要删除tbody
。您的HTML中没有tbody
。
答案 1 :(得分:1)
如图所示,您的示例 没有<{1}}节点,因此您的XPath不会返回任何节点(tbody
为null
)。
修复:
SelectSingleNode
调试技巧:慢慢构建XPath并检查每个结果/子节点:
HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td");