我面临 Woodstox STAX 和 java 1.6 STAX 实现之间的奇怪运行时冲突。由于我使用的是 CXF,因此它会将 Woodstox jar 作为其依赖项的一部分。这是我正在使用的示例代码。
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
在运行时,我收到以下异常。
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。但不知道为什么它以前没有失败。
任何指针将不胜感激。