0

我正在使用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?
...
4

1 回答 1

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
   }
   ..

}

有关事件的完整列表,请参考文档

于 2012-07-16T21:17:50.740 回答