首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Woodstox stax和java stax冲突

Woodstox stax和java stax冲突
EN

Stack Overflow用户
提问于 2010-10-26 08:58:54
回答 3查看 3.1K关注 0票数 2

我正面临着Woodstox STAX和java1.6StAX实现之间奇怪的运行时冲突。因为我使用的是CXF,所以它将Woodstox jar作为其依赖项的一部分。这是我正在使用的示例代码。

代码语言:javascript
复制
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

XMLInputFactory factory = (XMLInputFactory)XMLInputFactory.newInstance();
XMLEventReader reader =
factory.createXMLEventReader(new StringReader(xml)); 
while (reader.hasNext()){
XMLEvent event = reader.nextEvent();
switch (event.getEventType()){
case XMLEvent.START_ELEMENT :
StartElement se = event.asStartElement();
...........
...........
case XMLEvent.END_ELEMENT :
EndElement endElement = event.asEndElement();
if (event.asEndElement().getName().getLocalPart()==("document"))
// do something

在运行时,我得到了以下异常。

代码语言:javascript
复制
java.lang.Exception: java.lang.ClassCastException: com.ctc.wstx.evt.CompactStartElement cannot be cast to javax.xml.stream.events.EndElement

当它到达行EndElement endElement = event.asEndElement();

我有点不明白为什么在这一点上会导致这个问题,尽管它在StartElement se = event.asStartElement();中并没有失败

调试时,我发现事件对象是com.ctc.wstx.evt包的一部分,而不是javax.xml.stream。但不确定为什么它以前没有失败。

任何指针都将受到高度赞赏。

EN

回答 3

Stack Overflow用户

发布于 2010-10-26 09:13:04

从表面上看,你有两种可能的选择:

  1. 使用依存关系排除来关闭Woodstox。CXF与内置的StaX一起工作--或多或少地处理内置Stax中的各种错误。
  2. 自己使用Woodstox。

然而,这里的具体错误有点不太可能。我主要推荐将其发布到cxf用户列表,并在那里确切地告诉我们您使用的是什么版本的CXF。

票数 2
EN

Stack Overflow用户

发布于 2011-01-14 03:14:30

看一下这个异常,它表明基本上不能将StartElement转换为EndElement;它看起来不像stax实现之间的不兼容,而是某个地方的错误。这是哪个Woodstox版本?

票数 1
EN

Stack Overflow用户

发布于 2015-06-24 02:11:25

XMLEvent.START_ELEMENT用例末尾的break不应该在这里丢失,否则它将继续到END_ELEMENT用例的第一个START_ELEMENT事件,然后是ClassCastException。

这部分代码已经从问题中省略了,所以我想我应该把它放在这里,以防这个简单的错误可能被忽略。这就是为什么当我意识到我需要休息的时候,我得到了同样的例外,让我走到了这里。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4019969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档