2017-11-24 7 views
0

유니 코드 문자가있는 xml을 구문 분석하려고하지만, parse 함수를 호출 할 때 rapidxml이 예외를 제공하고 있습니다.RapidXml이 유니 코드 포함을 가진 xml을 구문 분석하지 못합니다.

코드 스 니펫 첨부.

참고 : 동일한 코드가 ascii containt를 구문 분석 할 수 있습니다.

bool 
ParseXmlData(const std::wstring &XmlData) 
{ 
    LPCTSTR thisMethod = L"ParseXmlData()"; 
    wchar_t* wc_xmlstring = wcsdup(XmlData.c_str()); 

    xml_document<wchar_t> xmldoc; 

    try 
    { 
     xmldoc.parse<0>(wc_xmlstring); 
    } 
    catch (rapidxml::parse_error &e) 
    { 
     std::cout << e.what() 
     free (dupStr); 
     return false; 
    } 

    - 
    - 
    - 
    - 
    return true 
} 
+0

어떤 예외가 있습니까? 테스트하려는 입력 값은 무엇입니까? – miradham

+0

이 오류가 발생했습니다 : 예상 됨 또는 " – simba

+0

내 XML에 한국어 문자가 있습니다. 내 코드가 실패한 곳에서 사용할 수 있습니다. <경로 ="\\ home \ 조선 글 "/> 자세한 정보 https://en.wikipedia.org/wiki/Hangul – simba

답변

1

모든 한국어 문자와 함께 재현되지는 않지만 입력 한 내용으로 문제를 재현 할 수 있습니다. lookx 테이블 크기를 벗어난 문자를 구문 분석 할 때 rapidxml은 bug입니다.

전체 패치 here을 찾을 수 있습니다. 이 패치를 적용한 후에 문제가 해결되었음을 확인했습니다.
유용 할 것입니다.

+0

또 다른 옵션은 UTF8 인코딩을 사용하는 것입니다 .- RapidXML은 그걸로 잘 작동 할 것입니다. – Roddy

+0

솔루션은 매력처럼 작동했습니다. @miradham에 감사드립니다. – simba

+0

@Roddy 몇 가지 이유로 유니 코드 형식으로 만 데이터를 보내야합니다. – simba