我可以帮助从HTML文档中获取值吗?
以下是文件内容:
<html>
<head>
<style>body, table, input, select, textarea, button { font: normal 1em Verdana, Sans-Serif; } body { font-size: 0.8em; } a { color:#336600; } b { color:#003300; }.header {font-family: verdana; font-size: 15px; color:#003300; font-weight:bold;}.back {background-color:#DBF0DB;}.back2 {background-color:#009933;}
</style>
</head>
<body>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr>
<td colspan="2" class="header">#827216</td>
</tr>
</table>
<body>
</html>
我想要检索#827216值。
以下是我正在使用的代码,但无法正常运行:
hdoc.LoadHtml(FileContents);
var xID = hdoc.DocumentNode.SelectNodes("/html/body/table/tr/");
这是错误:
表达式必须求值为节点集
答案 0 :(得分:2)
您的HTML代码不是有效的XML。 body
标记未关闭。此外,您的XPath表达式应为/html/body/table/tr/td
以转到td
元素。另外,要获得一个元素,您应该使用selectSingleNode
答案 1 :(得分:0)
无论您格式错误的HTML如何,都会获得内容:
HtmlNodeCollection tables = hdoc.DocumentNode.SelectNodes("//table[1]");
HtmlNodeCollection cells = tables[0].SelectNodes("//tr/td");
var cellText = cell[0].InnerHtml;
您应该修复HTML,关闭<body>
标记。
答案 2 :(得分:0)
关闭body标签并使用SelectSingleNode
XmlDocument doc = new XmlDocument();
doc.Load("test.html");
var xID = doc.SelectSingleNode("/html/body/table/tr/td");
textBox1.Text = xID.InnerText;
我知道这应该是针对xml的,但它也适用于html。