2009-03-31 7 views
3

XML 문서를 C#의 XPathDocument 개체로로드하려고합니다. 내 XML 문서는이 라인을 포함한다 : 예를 들어 Tres가 + rade 을 dégagée 파서가 도착했을 때 그것은 나에게 오류를 제공합니다 나는 그 문자 "E"의 일반적인 원인을 알고 "엔티티 이름을 구문 분석하는 동안 오류가 발생했습니다". 아무도 어떻게이 오류를 피할 수 있는지 알고 ... 내 생각 엔티티 선언을 XML 문서에 삽입하고 엔티티와 모든 특수 문자를 바꾼 후에 ...하지만 그것은 오래이고 그것이 작동하는지 모르겠습니다. 다른 아이디어가 있습니까? 더 간단한가? 고마워요EntityName을 구문 분석하는 동안 오류가 발생했습니다.

+1

당신이 부하를 수행하는 데 사용하는 코드를 보여 주면 그것은 도움이 될 것이다. – AnthonyWJones

답변

6

이 게시물을 게시 하려다가 서버가 다운되었습니다. 나는 문제가 기본적으로 XPathDocument 제공된 파일의 내용을 구문 분석하는 XmlTextReader를 사용한다는 사실 내에있는 생각

XmlTextReaderExpandEntitiesEntityHandling 설정을 사용 : 내가 메모리에서 제대로 다시 것 같아요 .

즉, 기본 설정을 사용하는 경우 XmlTextReader은 입력 XML의 유효성을 검사하고 모든 항목을 분석하려고 시도합니다. 더 좋은 방법은 (내가 항상 수동으로 할)을 XmlReaderSettings을 완벽하게 장악하여 수동으로이 작업을 수행하는 것입니다

string myXMLFile = "SomeFile.xml"; 
string fileContent = LoadXML(myXMLFile); 

private string LoadXML(string xml) 
{ 
    XPathDocument xDoc; 
    XmlReaderSettings xrs = new XmlReaderSettings(); 
    // The following line does the "magic". 
    xrs.CheckCharacters = false; 

    using (XmlReader xr = XmlReader.Create(xml, xrs)) 
    { 
    xDoc = new XPathDocument(xr); 
    } 

    if (xDoc != null) 
    { 
    XPathNavigator xNav = xDoc.CreateNavigator(); 
    return xNav.OuterXml; 
    } 
    else 
    // Unable to load file 
    return null; 
} 
4

일반적으로이 오류는 파일을 읽는 데 사용 된 인코딩과 실제로 인코딩 된 파일이 일치하지 않아 발생합니다.

파일이 UTF-8로 인코딩되었지만 기본 인코딩으로 읽었을 것이라고 추측합니다.

보다 자세한 답변을 얻으려면 자세한 내용을 질문 해보십시오.

관련 문제