2012-07-16 44 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