gpt4 book ai didi

xml-serialization - 关于选择不同二进制 xml 工具的建议

转载 作者:行者123 更新时间:2023-12-02 08:54:37 28 4
gpt4 key购买 nike

我的要求是将 xml 文件压缩为二进制格式,在开始解析它之前传输它并解压缩它(快如闪电)。

有相当多的二进制 xml 协议(protocol)和工具可用。我发现 EXI(高效的 xml 交换)比其他的更好。尝试了它的开源版本Exificient,发现它很好。

我听说过 google protocol buffers 和 facebook 的 thrift,谁能告诉我这两个是否可以完成我正在寻找的工作?

或者让我知道是否有比 EXI 更好的东西我应该寻找。

此外,还有一个很好的 XML 解析器 VTD-XML(我自己没有尝试过,只是在 google 上搜索了一下并阅读了一些文章),与 DOM、SAX 和 Stax 相比,它可以实现更好的解析性能。

我想要两全其美,最好的压缩+最好的解析性能,有什么建议吗?

关于 EXI 的另一件事是,EXI 如何声称能够快速解析解码的 XML 文件?因为它正在被 DOM、SAX 或 STax 解析?如果有另一个二进制解析器用于读取解码版本,我会相信这是真的。如果我错了请纠正我。

另外,有没有好的 EXI 格式的 C++ 开源实现? EXIficient 提供了 java 版本,但我无法找到 C++ 开源实现?

Agile Delta 有一个,但那是商业的。

最佳答案

你提到了 Protocol Buffer (protobuf);这是一种二进制格式,但与 XML 没有直接关系。特别是,没有对成员名称(元素名称/属性名称/命名空间)进行编码 - 它只是数据(带有标识符的数字标记)。

因此,除非您已经知道如何映射“字段 3”等,否则您无法从 protobuf 流重建任意 XML。

但是!如果您有一个同时使用 XML 和 protobuf 的对象模型,那么转换就很简单了;反序列化与任一 - 序列化与任一。其效果如何取决于实现情况;例如,它对于 protobuf-net 来说很简单,实际上就是我执行代码生成的方式(加载二进制文件;编写为 XML;通过 xslt 层运行 XML 以发出代码)。

如果你实际上只是想传输对象数据(XML只是一个建议的实现细节),那么我强烈推荐protobuf;平台独立、广泛的实现、版本容错、输出非常小、读写处理速度非常快。

关于xml-serialization - 关于选择不同二进制 xml 工具的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887400/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com