【发布时间】:2012-12-23 18:29:34
【问题描述】:
我正在使用 Xerces 并尝试将包含二进制数据的 XML 文档读入 DOM:
<field1>
<data>
[binary data (multiline) here]
</data>
</field1>
然后,我将每个<data> 节点的内容作为字符串检索以进行预处理。阅读代码如下:
DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(xc_DOMImplementation_Name);
DOMLSSerializer* serializer = ((DOMImplementationLS*)impl)->createLSSerializer();
std::wstring ws(serializer->writeToString(node));
这将返回 <data></data> 而不包含任何内容。我也尝试过使用 CDATA 块,但这没有帮助。将二进制数据交换为多行 ASCII 似乎工作正常。我希望字符串在遇到第一个二进制字符时立即被截断(可能导致返回空标签),但令人惊讶的是,删除空字符也不起作用,<data></data> 仍然返回。
如何在 Xerces 中执行此操作?我想避免通过读入 unsigned char* 并在那里执行操作来预处理整个文档。
谢谢。
【问题讨论】: