我知道如何利用java stax迭代器api读取xml文档,但是我想了解XMLEvent和XMLEventReader的实现。

XMLInputFactory xmlInFactory = XMLInputFactory.newFactory();
FileInputStream inStream = new FileInputStream(inFileName);
XMLEventReader xmlEventReader = xmlInFactory.createXMLEventReader(inStream);
while(xmlEventReader.hasNext()){
    xmlEvent = xmlEventReader.nextEvent();
    if(xmlEvent.isStartElement()){
            startElement = xmlEvent.asStartElement();
            ---more code---
     }
}


由于XMLEventReader和XMLEvent都是接口,hasNext(),isStartElement()和asStartElement()方法的实现在哪里?没有JDK中的方法实现,这些方法如何工作?这种逻辑从何而来?

提前谢谢你的帮助。

最佳答案

由于这些是接口,因此可以有多种实现。例如,在开发环境中,我有几种XMLEventReader实现可用,包括:


com.sun.xml.stream.XMLEventReaderImpl
org.codehaus.stax2.XMLEventReader2


第一个是Sun pull XML解析器,该解析器分布在JDK中。第二个是第三方Woodstox解析器的一部分。

10-04 18:34