要打印的XMLStreamReader

时间:2012-07-16 20:50:24

标签: java xml

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

我的问题是,有没有办法可以打印每个元素,包括文档的开头,如:

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

我每次reader.next()

例如:

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

1 个答案:

答案 0 :(得分: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