2013-11-25 111 views
4

我可以通過一些幫助從HTML文檔獲取價值嗎?從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/"); 

這裏是錯誤:

Expression must evaluate to a node-set

+2

您使用的HTMLAgilityPack? –

+0

是的,我正在使用HTMLAgilityPack。 – user2985419

回答

0

這將讓內容不管你的HTML格式不正確的:

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

你應該儘管解決您的HTML,關閉<body>標籤。

2

你的HTML代碼無效XML。 body標籤未關閉。您的XPath表達式應該是/html/body/table/tr/td以轉到td元素。此外,爲了獲得一個元素,你應該使用selectSingleNode

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也是如此。