2012-09-17 4 views
0

나는 다음과 같은 오류가 계속되면 추가 처리를위한하여 XDocument에 특수 문자가 포함 된 XML 파일의 문자열 내용을 구문 분석하는 것을 시도하고있다 :오류 구문 분석 XML

Name cannot begin with the '.' character, hexadecimal value 0x00. Line 1, position 8.

을 나는 통제권이 없습니다 이 파일. 내가 읽을 수있는 네트워크 공유에서 파싱 만하면된다.

<?xml version="1.0" encoding="utf-16"?> 
<ns0:SAEErr xmlns:ns0="http://xyz"> 
<ErrorInformation>olsfdhfaskldhfksajdfkajsf</ErrorInformation> 
<OriginalMessage>慐浹湥䥴Ɽ慐浹湥却慴畴䍳摯ⱥ慐</OriginalMessage> 
</ns0:SAEErr> 

코드는 위의 파일을 구문 분석은 다음과 같다 :까지 다음과 같이 파일 내용이

StringBuilder sb = new StringBuilder(); 
     sb.Append("<root>"); 
     sb.Append(FileUtil.ReadFileContent(fileName)); 
     sb.Append("</root>"); 

     return XDocument.Parse(sb.ToString());   

내가 무슨 말이냐?

미리 감사드립니다.

UPDATE : 다음 코드 업데이트는 않았다 :

XElement body = XElement.Load(fileName); 

return new XDocument(new XDeclaration("1.0", "utf-16", "no"), body); 

감사 헹크를!

+0

을 사용하면 XML 문서를로드하는 데 사용하는 코드를 표시합니다. –

+0

또한 실제로 UTF-16인지 확인한 방법을 알려주십시오. –

+0

예, XML 파일의 16 진수 덤프를 보여주십시오. –

답변

0

XElement.Load()으로 파일을 읽을 때 처리 라인에서 utf-16에서 utf-8으로 변경 한 후에 만 ​​오류를 재현 할 수 있습니다. 따라서 실제로 인코딩 오류입니다.

편집 :

귀하의 코드 :

StringBuilder sb = new StringBuilder(); 
    sb.Append("<root>"); 
    sb.Append(FileUtil.ReadFileContent(fileName)); // Encoding ?? 
    sb.Append("</root>"); 
    return XDocument.Parse(sb.ToString()); 

시도 :

XElement body = XElement.Load(fileName); 
    XDocument doc = new XDocument(new XElement("root", body)); 
+0

안녕하세요 Henk, UTF-16 인코딩으로 설정된 XML 파일에 코드 조각을 사용하려고하면 "공백이 아닌 문자를 내용에 추가 할 수 없습니다."라는 오류가 발생합니다. – Cranialsurge

+0

마지막 편집을 보았습니까? '새로운 XDocument' –