gpt4 book ai didi

java - 增量/流式 XSLT 转换?

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:18 26 4
gpt4 key购买 nike

我通常使用 JDK (JDK 7) 中的 XSLT 支持进行 XSLT 转换。最近我遇到了一个相当大的 XML 文档,对此应用 XSLT 转换(即使是非常基本的转换)会导致使用大量内存。

我一直很小心地进行所有处理流,但似乎 JDK 中的 XSLT 引擎(似乎是经过修改的 Xalan)总是首先在内存中构建 DOM。显然这不是我想要的。

现在我发现单独提供的 Xalan(2007 年的 2.7.1!)确实有一个用于执行增量转换的 API。因此,虽然这看起来确实有效,但我实际上希望我的代码在标准 JDK 上运行,而不告诉用户摆弄任何认可的文件夹。

在 Java 中执行增量 XSLT 转换的最佳方法是什么,以便我的代码与未修改/库存 JDK 安装兼容?

更新:这个最近更新的问题密切相关:What is the Most Efficient Java-Based streaming XSLT Processor?

最佳答案

首先,我强烈建议使用 Xalan 和 Xerces 的 Apache 版本,而不是 JDK 中捆绑的版本,后者有很多问题。对于 Xerces 尤其如此。

其次,如果您使用的是 Java,那么您真的应该转向 XSLT 2.0,它可以极大地提高开发效率。实际上,这意味着 Saxon(Saxon 的家庭版是免费的)。

Xalan 中的增量转换实际上并没有阻止它将整个源文档构建为内存中的树;它所做的只是允许树与转换过程并行构建。如果您想要流式转换,Saxon-EE 是您唯一实用的选择。 (请注意,saxon:stream() 扩展只是 Saxon 提供的流式传输功能的一小部分)。

关于java - 增量/流式 XSLT 转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880608/

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