使用RapidXML解析Xml文件时出错

时间:2012-04-20 15:36:52

标签: c++ rapidxml

当我尝试解析包含特定日语汉字的xml文件时,我有一个“parse_error”:

退

如果我将此汉字更改为另一个,则解析效果很好。

有什么想法吗?

PS:我使用rapidXML解析文件

以下是xml文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Exam.xsd">
    <Patient>
     <ESUID>CRodrigueTest-20120423-104410</ESUID>
     <Lastname>退</Lastname>
    </Patient>
</Root>

1 个答案:

答案 0 :(得分:0)

这里实际上问题不在于rapidXML库。问题可能出在basic_ifstream.basic_ifstream上,defualt仅在ansi模式下打开文件。所以我们必须将它设置为utf-8。使用下面的代码段:

    basic_ifstream<wchar_t> fFileStream(fullxmlfilepath, ios::binary);

    std::locale loc(std::locale::classic(), new std::codecvt_utf8<wchar_t>);
    fFileStream.imbue(loc);  

    xmlFile = new rapidxml::file<wchar_t>(fFileStream);
    doc.parse<parse_declaration_node>(xmlFile ->data());