使用xercesc_3_1库解析字符串流,当该流中有中文字符时,
XercesDOMParser *parser = new XercesDOMParser();
if (NULL == parser)
{
return -1;
}
InputSource* pInputSource = new MemBufInputSource((XMLByte *)srcBytes.c_str(), srcBytes.size(), X("GUID"));
if (NULL == pInputSource)
{
delete parser;
return -1;
}
1.parser->parse(*pInputSource);
执行到1是,vs报内存位置 0x0012b1c4 处的 xercesc_3_1::UTFDataFormatException。
然后解析XML失败。找了很久,终于知道要怎么做了。
我用的是Qt,从网页获得是一个QString str;需要调用srcBytes = str.toUtf8().constData();
这样才不会抛出异常。