從html文檔中獲取值

c# document html html-agility-pack nodes

我可以幫助從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/");

這是錯誤:

表達式必須評估為節點集

一般承認的答案

無論您格式錯誤的HTML,都會獲得內容:

HtmlNodeCollection tables = hdoc.DocumentNode.SelectNodes("//table[1]");
HtmlNodeCollection cells = tables[0].SelectNodes("//tr/td");
var cellText = cell[0].InnerHtml;

您應該修復HTML,關閉<body>標記。


熱門答案

您的HTML代碼不是有效的XML。 body標籤未關閉。你的XPath表達式應該是/html/body/table/tr/td來獲取td元素。另外,要獲取一個元素,您應該使用selectSingleNode



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow