XMLString :: transcode的目的

Joy*_*Joy 12 c++ string char xerces-c xml-parsing

我似乎不明白的目的XMLString::transcode(XMLCh*)XMLString::transcode(char*),因为很明显,我不明白之间的差别XMLCh*char*.有人可以让我更清楚吗?

rve*_*rve 25

Xerces在内部将信息编码为UTF-16.使用XMLCh数据类型存储UTF-16数据.

"C风格"字符串使用char在本地代码页中(可能是UTF-8,但它取决于平台和设置)用于transcode在两者之间进行转换.

例如,如果您想将一些数据从Xerces提供给另一个库,并且该库需要本地代码页中的文本,则需要transcode它.此外,如果您有char数据并希望将其提供给Xerces,则需要使用transcodeXMLCh,因为这是Xerces所理解的.

例如:

// to local code page
DOMNode *node = ...;
char* temp = XMLString::transcode(node->getNodeValue()); 
std::string value(temp);
XMLString::release(&temp); 

// from local code page
DOMElement *element = ...;
XMLCh *tag = XMLString::transcode("test");
DOMNodeList *list = element->getElementsByTagName(tag);
XMLString::release(&tag);
Run Code Online (Sandbox Code Playgroud)

别忘了释放字符串!更好的是围绕它编写一些包装,但是在互联网上有可用的例子(只搜索一个名为的类XercesString).

如果你想了解更多关于编码的信息,我认为你应该阅读绝对最低限度的软件开发人员绝对必须知道Unicode和字符集(没有借口!)