问题标签 [openexi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4581 浏览

java - 用于编码/解码 EXI 的 java 示例?

我正在寻找使用EXIficientOpenEXI编码/解码EXI(高效 XML 交换)流的 Java 示例程序。

有人可以帮忙吗?我似乎找不到示例应用程序。

编辑:或者,如果有人可以向我指出允许我使用 EXIficient 或 OpenEXI 的文档,那将很有帮助。我找到了 javadoc,但我不知道要使用哪些类。

或者,正如@StaxMan 指出的那样,是否特别提到/讨论了与标准 XML API 之一一起使用的适当顶级类?

0 投票
1 回答
534 浏览

java - Nagasena/OpenExi:使用 < in 属性对 xml 进行编码

我在 C# 中实现了 Nagasena 编码器:

我在编码简单有效的 xml 女巫时遇到问题,包含 <> 或&lt;&gt;

它只是以 TransmogrifierException: Nagasena.Sax.TransmogrifierException: End of document is not expected 结束。

我正在使用 c# 实现,所以我在 java 实现中测试了问题 - 它运行良好。所以我试图改变一些选项,但没有任何帮助。

当我<Text>&lt;</Text><Text><![CDATA[<]]></Text>和从<Booo id="6001&lt;" />我删除&lt;-替换时<Booo id="6001" />,编码成功。但是在属性中没有使用 cdata 的可能性,并且当它包含 <> 或者&lt;&gt;它以错误结束时。

我将调试 nagasena 库,但如果有人有一些有用的建议,我将不胜感激。

谢谢

0 投票
0 回答
315 浏览

c# - 在 C#/.NET 中使用 OpenEXI 的 EXI 解码器

我不知道如何使用 C#/.NET 创建 EXI 解码器,它接受包含 EXI 有效代码的 MemoryStream 并简单地输出另一个包含 XML 代码的 MemoryStream。稍后我将使用自定义方法解析 XML 代码;我只使用 EXI 来实现最佳压缩性能和低内存占用。到目前为止,我已经找到了一些 Java 实现作为示例,但没有找到 C#/.NET 对应的实现;任何形式的提示都非常感谢。

0 投票
1 回答
333 浏览

xml - 使用 EXI:如何保存评论?

我尝试使用exificient-gui对 XML 文件进行编码/解码,但未保留原始 XML 文件中包含的注释。我使用了这些设置:

使用 Exificient GUI

生成的 XML 文件(编码/解码后)不再包含 XML 注释。

然后我尝试对OpenExi做同样的事情,结果相同(= 没有评论)。

我也尝试过为 Exificient 和 OpenExi 提供的 Java 示例;再次没有评论。

  • Exificient(或 OpenExi)GUI 保留评论的正确选项是什么?
0 投票
1 回答
556 浏览

xml - 使用 EXI:如何处理大型 XML 文件(~ 20 GB)?

我目前正在评估 EXI 以压缩大型 XML 文件。大是指 20 GB(二十)的 XML 文件。

EXI 压缩编解码器和非 EXI 压缩编解码器 (gzip/lzma) 都集成在 Java 虚拟机上运行的 Scala 应用程序中。GZIP 和 LZMA 由 commons-compress 提供。所有编解码器都在这些 3rd 方库中用 Java 实现。

在具有 8 GB(JVM 为 6 GB)的 64 位 Linux 系统上,当原始 XML 文件约为 10 GB 时,Exificient 和 OpenExi 都可以编码,但无法解码。

  • Exificient 因 OutOfMemory 而失败
  • OpenExi 失败并出现 ArrayIndexOutOfBoundsException: 1000000
  • GZIP/LZMA 没有问题

  • 甲骨文 JDK:1.8-8u40

  • JVM参数:-Xmx6g -XX:+UseG1GC -XX:+UseStringDeduplication

  • 生成的 EXI 编码 XML 文件的大小约为 70 MB

我的问题:

  • EXI 是否暗示(由于它的底层算法)内存使用量随着 XML 输入文件的大小而增加?如果是这样,是否有一个简单的公式来计算所需的内存?
  • 有什么办法可以让它工作(除了分配更多的内存)?