2012-07-16 22 views
0

我正在使用XMLStreamReader来读取XML文件并查找特定元素,然后更新相应的值。要打印的XMLStreamReader

我的问题是,有没有办法我可以打印每一个元素,包括文档的开始,如:每次我做reader.next()时间

<?xml version="1.0" encoding="UTF-8"?> 

例如:

XMLStreamReader reader = inputFactory.createXMLStreamReader(new FileInputStream(
       file)); 
while(reader.hasNext()) 
reader.next().ToString() //Something like this? 
... 
+0

'next()'返回一个整数:“与当前分析事件对应的整数代码”。 – 2012-07-16 21:09:59

回答

2

我有点困惑你的要求。

要打印<?xml version="1.0" encoding="UTF-8"?>,您将必须处理START_DOCUMENT事件。您可以拨打这个状态下面的方法:

next(), getEncoding(), getVersion(), isStandalone(), standaloneSet(), getCharacterEncodingScheme(), nextTag() 

要打印得最多的是元素的名称以前读每当你做一个next()电话:

XMLStreamReader reader = inputFactory.createXMLStreamReader(new FileInputStream(
        file)); 
String currentElement = ""; 
while(reader.hasNext()) { 
    int next = reader.next(); 

    .. 
    if(next == XMLStreamReader.START_ELEMENT){ 
     currentElement = reader.getLocalName(); 
    .. 

    System.out.println(currentElement); 
} 

或者,如果你有兴趣刚打印出所有从XML文件中的数据,则需要相应地处理每个事件:

XMLStreamReader reader = inputFactory.createXMLStreamReader(new FileInputStream(
       file)); 
while(reader.hasNext()) { 
    int next = reader.next(); 

    .. 
    if(next == XMLStreamReader.START_ELEMENT){ 
     System.out.println(reader.getLocalName()); 
    } 
    else if(next == XMLStreamReader.ATTRIBUTE) { 
     // Print out all the attributes 
    } 
    else if(next == XMLStreamReader.COMMENT) { 
     // Print the comment 
    } 
    .. 

} 

对于事件的完整列表,请参考documentation