首页 文章

STaX解析器表现不同

提问于
浏览
1

我使用的是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时,它的行为有所不同 . 有谁知道这可能是什么问题?

1 回答

  • 4

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

    由于没有在 XMLEvent 的API上指定 toString() 的行为,因此可以实现打印输出的感觉 . 有些实现转储普通旧的 Object#toString() ,有些可能会写出XML等 . 有效地,您可以通过javax包接口指定 .

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

    (过去,当Sun更改了提供程序时,这个问题与其他XML API一起被破坏了 . 用于从toString打印XML的org.w3c.dom.Element,但它是提供者行为,然后有一天它改变了很多人的代码没钱了!)

相关问题