Java 理解StAX的游标API和迭代器API之间的区别
好的,当学习如何使用Java 理解StAX的游标API和迭代器API之间的区别,java,xml,iterator,cursor,stax,Java,Xml,Iterator,Cursor,Stax,好的,当学习如何使用StAXAPI处理XML时。我看到有两种方法可以解析XML文档,即: 游标API 迭代器API cursorapi是使用XMLStreamReader的地方,它是next()和hasNext()方法。 迭代器API使用XMLEventReader的方式与上面的方式大致相同 这本书仅在一个不太具有描述性的段落中总结了迭代器API。它表示,当您想查看下一个将出现的事件时,可以使用此选项,并且根据XMLEvent的值,可以使用XMLStreamReader跳过或处理即将发生的事件
StAX
API处理XML时。我看到有两种方法可以解析XML文档,即:
cursorapi
是使用XMLStreamReader
的地方,它是next()
和hasNext()
方法。迭代器API
使用XMLEventReader
的方式与上面的方式大致相同
这本书仅在一个不太具有描述性的段落中总结了迭代器API。它表示,当您想查看下一个将出现的事件时,可以使用此选项,并且根据XMLEvent
的值,可以使用XMLStreamReader
跳过或处理即将发生的事件
我无法理解这件事。有人能解释一下怎么做吗
用于游标API的SSCCE
import javax.xml.stream.*;
导入javax.xml.stream.events.*;
导入java.io.*;
公共类StaxCursorDemo{
公共静态void main(字符串[]args){
试一试{
XMLInputFactory inputFactory=XMLInputFactory.newInstance();
InputStream输入=新文件InputStream(新文件(“helloWorld.xml”);
XMLStreamReader=inputFactory.createXMLStreamReader(输入);
而(xmlStreamReader.hasNext()){
int event=xmlStreamReader.next();
if(event==XMLStreamConstants.START\u文档){
System.out.println(“开始解析文档”);
}
if(event==XMLStreamConstants.END_文档){
System.out.println(“结束文档解析”);
}
if(event==XMLStreamConstants.COMMENT){
System.out.println(“注意:+xmlStreamReader.getText());
}
if(event==XMLStreamConstants.START_元素){
System.out.println(“开始元素:+xmlStreamReader.getLocalName());
对于(inti=0;i可能还有更多,但提供的对象给了您更多的灵活性和功能性,而不是为您创建这些对象
因此,它的性能更好,同时为您提供了一些现成的功能
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import java.io.*;
public class StaxCursorDemo{
public static void main(String[] args){
try{
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
InputStream input = new FileInputStream(new File("helloWorld.xml"));
XMLStreamReader xmlStreamReader = inputFactory.createXMLStreamReader(input);
while(xmlStreamReader.hasNext()){
int event = xmlStreamReader.next();
if(event == XMLStreamConstants.START_DOCUMENT){
System.out.println("Beginning parsing of document");
}
if(event == XMLStreamConstants.END_DOCUMENT){
System.out.println("Ending parsing of document");
}
if(event == XMLStreamConstants.COMMENT){
System.out.println("NOTE: " + xmlStreamReader.getText());
}
if(event == XMLStreamConstants.START_ELEMENT){
System.out.println("Beginning Element: " + xmlStreamReader.getLocalName());
for(int i = 0;i<xmlStreamReader.getAttributeCount();i++){
System.out.println("Attribute is: " + xmlStreamReader.getAttributeLocalName(i));
System.out.println("Attribute value is: " + xmlStreamReader.getAttributeValue(i));
}
}
if(event == XMLStreamConstants.END_ELEMENT){
System.out.println("End Element: ");
}
if(event == XMLStreamConstants.CHARACTERS){
System.out.println("Value: " + xmlStreamReader.getText());
}
}
}catch(FactoryConfigurationError e){
System.out.println(e.getMessage());
}catch(XMLStreamException e){
System.out.println(e.getMessage());
}catch(IOException e){
System.out.println(e.getMessage());
}
}
}