2014-06-25 70 views
1

所以,我喜歡HtmlAgilityPack的全新功能,我想知道是否有人能夠幫助我解壓縮這些數據,然後向我解釋所有涉及的符號及其含義。HtmlAgilityPack提取數據

我要解開一個禮品卡餘額(嚴格來說這是供個人使用的,我想這樣做像亞馬遜帳戶摘要程序),用於該HTML如下:...

<div class="gcBalanceBox "> 
    <h3>Available Gift Card Balance: 
     <span>$1.02</span> 
    </h3> 

     <p>Your balance will never expire. We'll automatically apply your balance when you checkout. If you would rather not use your balance, you can deselect it in the Payment Selection step of checkout.</p> 
</div> 

我想提取從這個數據[$ 1.02,這是我沒有成功嘗試,但:

HtmlAgilityPack.HtmlDocument hp = new HtmlAgilityPack.HtmlDocument(); 
      hp.LoadHtml(webBrowser1.Document.Body.InnerHtml); 
      var node = hp.DocumentNode.SelectSingleNode("//div[@class='gcBalanceBox']/span"); 
      string Description = node.InnerText; 

有人能解釋一個解決方案,我好嗎?謝謝你們

回答

0

幾乎在那裏。

跨度是<h3>內,雖然如此,你會希望包括在你的XPath:

var node = hp.DocumentNode.SelectSingleNode("//div[@class='gcBalanceBox ']/h3/span"); 
+0

啊,我覺得很愚蠢的,我還是不能讓我的代碼在這裏工作雖然>> 'var node = hp.DocumentNode.SelectSingleNode(「// div [@ class ='gcBalanceBox']/h3/span」)。InnerText;' It throws: '對象引用未設置爲對象的實例。 ' – Frank

+0

檢查'webBrowser1.Document.Body.InnerHtml'是否實際上包含某些內容。在拋出錯誤的語句之前檢查'hp.DocumentNode!= null'也是一個好主意。 – rikitikitik

+0

是的webBrowser1.Document.Body.Innerhtml確實包含了一些東西,我在它嘗試任何東西之前將它寫入了一個文本文件,並且HTML返回的正如網頁一樣。那可能是什麼? – Frank