2011-09-10 14 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ではないのです。

XMLテキストデータの周りにStringReaderを作成してください。実際には文字列データに変換しないほうがよいでしょう。それはUTF-8以外のものでコード化されているかもしれません - そしてXMLパーサーはそれに対処する方法を知っています。これがあなたの現在のアプローチに問題を抱えている理由は完全に可能です。バイナリのデータを残して、それを解析する:あなたは、.NET 3.5以降を使用している場合はさておきとして

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

を、私は強くは、代わりに(XDocumentなど)XMLにLINQを使用することができ助言します古いDOM API。 XMLへのLINQは、それ以上はです。 XMLにLINQで

、あなたが使用したい:

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

を私はまだであっても上記のコード断片をしようとした後、同じ例外を取得しています。 –

+0

@Sanchaita:それは、データが有効なXMLではないことを示しています。元々無効だったのか、ZipFileEntryクラスが問題を引き起こしているのかは不明です。どこから来たのですか? –

関連する問題