c++ - XMLString::transcode 的用途

标签 c++ string xml-parsing char xerces-c

我似乎不明白 XMLString::transcode(XMLCh*)XMLString::transcode(char*) 的目的,因为显然我不明白不理解 XMLCh*char* 之间的区别。 有人可以帮我把事情弄清楚吗?

最佳答案

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

'C-style' 字符串使用本地代码页中的 char(可能是 UTF-8,但这取决于平台和设置)你使用 transcode在两者之间转换。

例如,如果您想将一些数据从 Xerces 提供给另一个库,而该库需要本地代码页中的文本,您需要对其进行转码。此外,如果您有 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);

不要忘记释放绳子!更好的办法是围绕它写一些包装器,但有 examples在 Internet 上可用(只需搜索名为 XercesString 的类)。

如果您想了解更多关于编码的信息,我认为您应该阅读 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

关于c++ - XMLString::transcode 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826518/

相关文章:

java - 最长子串,超过时间限制java

xml - Perl XML::DOM 解析器的使用

javascript - 获取子节点时 XML Null

c++ - 调用一个空函数会有多浪费?

c++ - 将 qt creator 项目移植到 windows 时出现 z.lib 问题

c++ - 从文件中读取并在 C++ 中转换为 double

javascript - 在 JS 中创建、编辑和保存 XML

c++ - 参数未知数据类型的可变参数函数

c++ - C++ 是否支持 strnlen 函数,在 codeblocks ide 上?

java - 如何修复递归字符串检查