在Xerces中读取和编写unicode字符串

时间:2013-10-23 12:41:38

标签: xml apache c++11 xerces xerces-c

我想在Windows平台上从XML文件中读取和编写阿拉伯字符。我的c ++程序使用Xerces来处理XML文件。正如Xerces文档所述,它支持Unicode字符。 我用

xercesc::XMLString::transcode()

xercesc::XMLString::transcode("محمد")

方法但它返回????字符。怎么了? (在Xerces文档中提示XMLCh是wchar_t)

1 个答案:

答案 0 :(得分:0)

答案很简单。我在搜索后得到了它。 XMLCh是wchat_t的typedef所以对于某些方法,例如xercesDomParser->解析器,它将XMLCh *作为参数,如果输入是wstring的类型,则使用c_str()。例如:

parser.parse(input.c_str());

如果输入是字符串的类型,请使用XMLString :: transcode()方法。例如:

parser.parse(XMLString::transcode(stringVariable));

另一方面是wstring作为xerces方法的输出。您应该只使用wstring变量并初始化它。例如,xerces::XMLException::getMessage()将返回XMLCh *作为输出。你可以这样对待:

wstring test=wstring(xerces::XMLException::getMessage());

如果你想要字符串,你可以再次使用转码方式,如

char* test=xerces::XMLString::transcode(xerces::XMLException::getMessage());