2013-10-04 37 views
0

我使用HtmlAgilityPack加載HTML文件是這樣的:如何停止HtmlAgilityPack更改加載頁面的源代碼?

var doc = new HtmlAgilityPack.HtmlDocument(); 
doc.OptionOutputOriginalCase = true; 
doc.Load(@"c:\ftp\file3.html"); 

然後我使用XPath來選擇節點,並得到outerHTML但問題是,我得到一個修改過的頁面源,例如我得到:

<font class="hello" id="price"> 

當真正的頁面源是

<font class=hello id=price> 

如何避免呢?

+2

我認爲HTML敏捷包只是自動更正格式不正確的HTML,大多數瀏覽器都會做類似的事情。 –

回答

3

你不知道。至少不使用DOM解析器時。

在這種情況下,HTML敏捷性程序包正在接受字符串輸入並盡最大努力從該輸入中創建有效的DOM。這是無效的:

<font class=hello id=price> 

所以,把它翻譯成的東西是有效的:

<font class="hello" id="price"> 

它會嘗試任何和在HTML中,所有無效的標記做同樣的。如果你不想使用有效的標記,那麼DOM解析器可能不適合這項工作。那時你正在使用一個自定義的字符串輸入,你必須自己解析它。

+0

是否有其他選項可以輕鬆地刪除網頁並檢測標籤(以及它們之間的innerText),而無需修改源代碼? – user2396640

+1

@ user2396640:我看不出DOM解析如何阻止你這樣做。如果您想分析HTML,那麼解析器首先必須將輸入轉換爲有效的HTML。如果你想解析一些不是真正HTML的自定義字符串,但看起來很像,你自己。 – David

+0

so ..也許我會以任何方式使用它,如果你知道如何告訴我如何使用xpath來達到「複雜」的innerText: innerTEXT user2396640