当我尝试解析包含特定日语汉字的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>
答案 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());