2012-03-15 74 views
0

我使用HtmlAgilityPack來解析我的HTML文檔,但我無法得到正確的HTML。HtmlAgilityPack UTF-8編碼

例如:

string s="<!DOCTYPE html> 
       <li>Voltage: <0.05% + 10 mV 
       (<0.1% + 25 mV for output 2 of E3646/47/48/49A)</li> 
      </html>"; 

HtmlAgilityPack.HtmlDocument doc; 
doc.LoadHtml(s); 

,但我得到:的

"<li>Voltage: <0.05% +="" 10="" mv=""></0.05%><0.1% +="" 25="" mv="" for="" output="" 2="" of=""></0.1%></li>" 

代替:

"<li>Voltage: <0.05% + 10 mV (<0.1% + 25 mV for output 2 of E3646/47/48/49A)</li>" 

問題是什麼?

p.s.我有一個utf-8編碼的另一個html文檔,它沒有問題。

回答

0

您在li的文本有<,造成mV等等被解釋爲(它被解釋爲一個元素,因爲有它前面一個<)的0.05%元素的屬性。

您應該將其轉義爲&lt;

string s="<!DOCTYPE html> 
       <li>Voltage: &lt;0.05% + 10 mV 
       (&lt;0.1% + 25 mV for output 2 of E3646/47/48/49A)</li> 
      </html>"; 
+0

謝謝,這是說明問題沒有連接到編碼,這是一半的答案。但是:我不能改變文字,因爲我從網站上得到它。那麼你有另外一個想法嗎? – 2012-03-15 14:10:54

+0

@Chanipoz - 不是。如果你沒有得到有效的HTML,你需要告訴HTML的提供者它是無效的,他們應該修復它。 – Oded 2012-03-15 14:14:44

+0

這是唯一的方法?因爲我不能要求提供者。 – 2012-03-15 14:17:25