2011-09-10 59 views
0

我正在開發一個應用程序,用於讀取文件,將內容轉換爲字符串,然後將該字符串加載到XML中。但是我面臨的問題是,在將字符串數據加載到XML中時,我收到了無效字符的異常。我正在使用下面的一段代碼。任何人都可以幫助我解決這個問題。先謝謝你。將字符串加載到XML數據中

ZipFileEntry objContactXML; 

String xmlData = ASCIIEncoding.UTF8.GetString(objContactXML.FileData); 

XmlDocument xmlDoc = new XmlDocument(); 

xmlDoc.LoadXml(xmlData); 

問候, Sanchaita

回答

4

首先,這是一個代碼討厭位:

ASCIIEncoding.UTF8 

請使用剛剛Encoding.UTF8 - 這是UTF-8,而不是ASCII。

現在,你可以創建一個StringReader圍繞你的XML文本數據 - 但你最好不要把它變成字符串數據。它可能被編碼爲除UTF-8以外的其他內容 - 並且XML解析器知道如何處理它。這完全有可能,這就是爲什麼你遇到目前的方法存在問題。留在二進制數據和解析:

using (MemoryStream stream = new MemoryStream(objContactXML.FileData)) 
{ 
    document.Load(stream); 
} 

順便說一句,如果你使用.NET 3.5或更高版本,我會強烈建議您使用的LINQ to XML(XDocument等),而不是舊的DOM API。 LINQ to XML是很多更好的API。

在LINQ to XML,你會使用:

XDocument document; 
using (MemoryStream stream = new MemoryStream(objContactXML.FileData)) 
{ 
    document = XDocument.Load(stream); 
} 
+0

我仍然得到同樣的例外,甚至試圖上面這段代碼之後。 –

+0

@Sanchaita:然後表明數據不是有效的XML。目前還不清楚它是否最初是無效的,或者您的ZipFileEntry類是否導致問題 - 這是從哪裏來的? –