2

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

谢谢。

4

1 回答 1

1

你最好对二进制数据进行base64编码。检查 apache 上的 commons-codec 库。

XML是为文本而生的,所以需要将二进制数据转成文本;base64编解码器用于此目的。

于 2012-12-23T18:36:54.417 回答