gpt4 book ai didi

java - STaX 解析器表现不同

转载 作者:行者123 更新时间:2023-11-29 03:56:55 30 4
gpt4 key购买 nike

我使用的是 java 6,rt.jar 具有进行基于 STaX 的解析所需的所有类。我主要使用以下类:

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.events.XMLEvent;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;

当我将以下内容作为 java 应用程序运行时:

while(reader.hasNext()) {            
XMLEvent elementsEvent = reader.nextEvent();
System.out.println(elementsEvent.toString());
--------
}

它按预期工作,但是当我将其部署到 JBoss 中时,它的行为有所不同。有谁知道这里可能是什么问题?

最佳答案

JBoss 使用此处的 RI:http://stax.codehaus.org/Home对于 STAX 提供商。我猜 JDK 可能默认使用 SJSXP。

由于 toString() 的行为未在 XMLEvent 的 API 上指定,因此打印出来的感觉取决于实现。有些实现会转储普通的旧 Object#toString(),有些可能会写出 XML 等。实际上,您依赖于 javax 包接口(interface)未指定的实现细节。

您可以通过在开发环境中使用 codehaus stax 实现来获得一致的行为,但当然您仍在使用特定于供应商的功能。

(在过去,当 Sun 更改提供者时,其他 XML API 也出现了这个问题。org.w3c.dom.Element 用于从 toString 打印 XML,但它是提供者行为,然后有一天它改变了并且很多人的代码都坏了!)

关于java - STaX 解析器表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874535/

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