gpt4 book ai didi

java - XML 中的独立参数在 Jetty 上生成,但不在 JBOSS 上生成

转载 作者:行者123 更新时间:2023-11-30 06:16:07 24 4
gpt4 key购买 nike

下面是我用 Java 生成 XML 的代码片段。我使用的是 jdk1.8.0_152,以下示例用于构造 XML 元素。

DocumentBuilder dBuilder= DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(xmlString)));
doc.getDocumentElement().normalize();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
returnXML = writer.toString();

上面的代码返回

<?xml version="1.0" encoding="UTF-8"?><TYPE>star</TYPE>

在 JBossAS [6.1.0] 上,当它返回时

  <?xml version="1.0" encoding="UTF-8" standalone="no"?><TYPE>star</TYPE>

在 Jetty9.1 上。不知道我错过了什么。Document 类和底层 TransformerFactory 应该是相同的,因为我们对两者使用相同的 Java1.8。

最佳答案

在某些情况下,jaxp API 将在类路径中搜索“providers”。当它在类路径上找到最高优先级的提供程序时,它会使用该实现。如果在类路径上找不到提供程序,它将默认使用 JVM 提供的实现(系统默认)。

参见DocumentBuilderFactory.newInstance()有关此过程的更多信息。

以下是您提到的两个容器的不同之处(开箱即用):

JBoss AS 6.1 - JBoss 附带 Xerces 2.9.1,它是一个 jaxp 服务提供商

Jetty - Jetty 中没有打包任何 jaxp 服务提供者,因此 jaxp 默认使用 JVM 提供的实现

在此特定情况下,JVM 提供的实现将添加您引用的 standalone 属性。

关于java - XML 中的独立参数在 Jetty 上生成,但不在 JBOSS 上生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49162620/

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