gpt4 book ai didi

java - 使用java获取xsl消息

转载 作者:行者123 更新时间:2023-12-01 18:22:00 28 4
gpt4 key购买 nike

我正在尝试打印 <xsl:message>在使用 JAXP 的 JTextArea 中。我的问题是,我无法用我的变压器创建 saxonica Controller ,我不知道为什么,因为我正在使用 TransformerFactoryImpl,正如一些答案中所调用的那样。

这是我的 Java 代码:

public static void xslTransform(File xmlFile,File xslFile, JTextArea output){
StreamSource source = new StreamSource(xmlFile);
StreamResult result = new StreamResult(xslFile);
TransformerFactoryImpl tfimpl = new TransformerFactoryImpl();
Transformer transformer = tfimpl.newInstance().newTransformer(new StreamSource(xslFile));
Controller controller = new Controller(transformer);

导入 Controller :

net.sf.saxon.Controller;

希望有人能帮助我。

卡芙

最佳答案

Controller 类上从来没有一个构造函数将 JAXP Transformer 作为参数,我不知道你从哪里得到这个想法。

在 Saxon 9.6 之前的版本中,如果要调用 Controller 对象上的方法,可以将 Transformer 强制转换为 Controller,即

Controller controller = (Controller)transformer;

在 9.6 中,Controller 和 Transformer 之间的关系发生了变化,因为 JAXP API 变得越来越不适合利用 XSLT 3.0 中提供的功能。现在,您可以将 Transformer 转换为 net.sf.saxon.jaxp.TransformerImpl,并且可以从 TransformerImpl 调用 getUnderlyingController() 来访问 Controller。

但是你真的想这样做吗?另一种选择是这样做

factory.setAttribute(FeatureKeys.MESSAGE_EMITTER_CLASS, MyMessageEmitter.class)

其中 MyMessageEmitter 是 Saxon 的 MessageEmitter 接口(interface)的实现。

关于java - 使用java获取xsl消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420589/

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