我正在尝试解析具有Unicode字符的xml,但是当我调用解析函数时,rapidxml给出了异常。

附加代码段。

注意:相同的代码能够解析ascii包含。

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
}

最佳答案

我可以用您的输入来重现您的问题,尽管并非每个朝鲜语字符都可以重现。
事实证明,在解析查找表大小之外的字符时,rapidxml具有bug

您可以找到完整的修补程序here。我已验证在应用此补丁后该问题已解决。
希望它会有用。

10-01 01:31
查看更多