gpt4 book ai didi

java - 在流模式下使用 StAX 读取 XSL 转换的结果

转载 作者:行者123 更新时间:2023-12-01 22:13:05 25 4
gpt4 key购买 nike

我的用例是:

  • XML 文件作为输入
  • 需要使用 XSLT 进行转换(使用 Java 8 内置 XSLT 处理器)
  • 使用 XMLStreamReader 处理结果(使用 Java 8 内置 StAX 实现)

我想以“流模式”执行此操作(因此将 XSL 转换的输出写入文件,然后由 XMLStreamReader 对其进行解析)。

这可能吗?如果是这样,怎么办?我只能找到基于 SAX 的示例。

最佳答案

可能不可能。大多数 XSLT 引擎以推模式写入结果“树”,因此您可以通过在事件发生时接受事件来跳过物理树的创建,但如果您想以拉模式获取结果,则需要运行在一个线程中进行转换并在另一个线程中读取结果,使用诸如 BlockingQueue 之类的东西将事件从一个线程传递到另一个线程。 Saxon 有内部机制以这种方式使用多个线程处理推拉冲突,但仅限于项目级别,而不是事件级别,这对您没有多大用处,因为整个结果树是一个项目。所以基本的答案是,我认为实现您想要的功能的唯一方法是编写一个多线程 SAX 到 StAX 转换器,这是 Java 编码的一个棘手部分。

关于java - 在流模式下使用 StAX 读取 XSL 转换的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535045/

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