我知道如何利用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解析器的一部分。