Xml Transformer 在尝试将 StaxSource 转换为 StreamResult 时给我一个错误

Xml Transformer give me an error when trying to transform a StaxSource into a StreamResult

尝试将 Staxsource 转换为 StreamResult 时出现错误(当 运行 在 Wildfly 24 上使用 Adoptopenjdk 11-hotspot 时)

但是从单元测试执行的相同代码没有错误地通过并且正确地完成了工作(使用 Adoptopenjdk 11-hotspot)

这是我得到的错误:

14:50:15,455 ERROR [com.x.x.x.x.x.DeliveryParser] (default task-1) javax.xml.transform.TransformerException: Source object passed to ''{0}'' has no contents.
ERROR:  'Source object passed to ''{0}'' has no contents.'

这里是源代码:

private static String readElementString(final XMLStreamReader streamReader)  {
    try {
        StringWriter stringWriter = new StringWriter();

        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.UTF_8.toString());

        StAXSource stAXSource = new StAXSource(streamReader);
        StreamResult streamResult = new StreamResult(stringWriter);

        transformer.transform(stAXSource, streamResult);  <-- error is thrown here

        return stringWriter.toString();
        ...

找不到我可以在网上使用的东西。

有人给我提示吗?

谢谢 - 法比恩

这是我找到的解决方案:

进行单元测试时,“TransformerFactory”给我一个来自 JDK.

的“com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl”实例

在 Wildlfy 上,工厂给了我一个“org.apache.xalan.xsltc.trax.TransformerImpl”的实例。

当我尝试转换 StaxSource 时,最后一个导致我出错。不知道为什么。

所以,我现在使用下面的代码从 JDK 实例化 TransformerFactory :

TransformerFactory.newDefaultInstance();

代替

TransformerFactory.newInstance();