2011-09-10 3 views
0

파일을 읽고 내용을 문자열로 변환 한 다음 XML로 문자열을로드하는 응용 프로그램을 개발 중입니다. 하지만 내가 직면 한 문제는 XML에 문자열 데이터를로드하는 중에 잘못된 문자를 제외하고 있다는 것입니다. 다음 코드를 사용하고 있습니다. 문제를 해결하는 데 도움을 줄 수 있습니까? 미리 감사드립니다.문자열을 XML 데이터로로드

ASCIIEncoding.UTF8 

단지 Encoding.UTF8을 사용하십시오 -이 UTF-8이 아닌 ASCII입니다 :

ZipFileEntry objContactXML; 

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

XmlDocument xmlDoc = new XmlDocument(); 

xmlDoc.LoadXml(xmlData); 

감사합니다, Sanchaita

답변

4

첫째,이 코드의 불쾌한 비트입니다.

이제 XML 텍스트 데이터 주위에 StringReader을 만들 수 있습니다. 실제로는 문자열 데이터로 변환하지 않는 것이 좋습니다. 그것은 UTF-8이 아닌 다른 것으로 인코딩 될 수 있으며 XML 파서는이를 처리하는 방법을 알고 있습니다. 이것이 현재의 접근 방식에 문제가있는 이유입니다. 바이너리 데이터를 그대로두고 그 해석 : 당신이 .NET 3.5 이상을 사용하는 경우, 여담으로

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

를, 내가 강하게 조언 당신이 (등 XDocument) XML에 LINQ를 사용하는 것 대신에의 오래된 DOM API. LINQ to XML은 입니다. 더 멋진 API입니다. XML에 LINQ에서

, 당신은 사용하십시오 : 나는 여전히 같은 예외를 얻고있다

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

을하더라도 위의 코드 조각을 시도한 후. –

+0

@Sanchaita : 그렇다면 데이터가 유효한 XML이 아님을 알 수 있습니다. 원래 무효 였는지 또는 ZipFileEntry 클래스가 문제를 일으키고 있는지 여부가 명확하지 않습니다. –

관련 문제