【问题标题】:Xerces - binary dataXerces - 二进制数据
【发布时间】:2012-12-23 18:29:34
【问题描述】:

我正在使用 Xerces 并尝试将包含二进制数据的 XML 文档读入 DOM:

<field1>
<data>
[binary data (multiline) here]
</data>
</field1>

然后,我将每个&lt;data&gt; 节点的内容作为字符串检索以进行预处理。阅读代码如下:

DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(xc_DOMImplementation_Name);
DOMLSSerializer* serializer = ((DOMImplementationLS*)impl)->createLSSerializer();
std::wstring ws(serializer->writeToString(node));

这将返回 &lt;data&gt;&lt;/data&gt; 而不包含任何内容。我也尝试过使用 CDATA 块,但这没有帮助。将二进制数据交换为多行 ASCII 似乎工作正常。我希望字符串在遇到第一个二进制字符时立即被截断(可能导致返回空标签),但令人惊讶的是,删除空字符也不起作用,&lt;data&gt;&lt;/data&gt; 仍然返回。

如何在 Xerces 中执行此操作?我想避免通过读入 unsigned char* 并在那里执行操作来预处理整个文档。

谢谢。

【问题讨论】:

    标签: binary xerces


    【解决方案1】:

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

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

    【讨论】:

    • 澄清谁负责转换base64数据并从中提取字符或字节? Xerces 还是自定义处理程序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2011-11-23
    • 2012-12-31
    • 2018-09-25
    • 2011-08-20
    • 2012-06-22
    相关资源
    最近更新 更多