我正在使用 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* 并在那里执行操作来预处理整个文档。
谢谢。