开发手册 欢迎您!
软件开发者资料库

StAX解析器 - 解析XML文档

Apache Xerces StAX Parser解析XML文档 - 从基本到高级概念的简单简单步骤学习Apache Xerces,其中包括概述,Apache Xerces XML Parsers,DOM Parser,Parse XML Document,Query XML Document,Create XML Document,Modify XML Document,SAX Parser,StAX Parser。

演示示例

以下是我们需要解析的输入xml文件;

         Dinkar      Kad      Dinkar      85               Vineet      Gupta      Vinni      95               Jasvir      Singh      Jazz      90   

StAXParserDemo.java

package com.it1352.XML; import java.io.FileNotFoundException;import java.io.FileReader;import java.util.Iterator;import javax.xml.stream.XMLEventReader;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamConstants;import javax.xml.stream.XMLStreamException;import javax.xml.stream.events.Attribute;import javax.xml.stream.events.Characters;import javax.xml.stream.events.EndElement;import javax.xml.stream.events.StartElement;import javax.xml.stream.events.XMLEvent;public class StAXParserDemo {   public static void main(String[] args) {      boolean bFirstName = false;      boolean bLastName = false;      boolean bNickName = false;      boolean bMarks = false;      try {         XMLInputFactory factory = XMLInputFactory.newInstance();         XMLEventReader eventReader =         factory.createXMLEventReader(new FileReader("input.txt"));         while(eventReader.hasNext()){            XMLEvent event = eventReader.nextEvent();            switch(event.getEventType()){               case XMLStreamConstants.START_ELEMENT:                  StartElement startElement = event.asStartElement();                  String qName = startElement.getName().getLocalPart();                  if (qName.equalsIgnoreCase("student")) {                     System.out.println("Start Element : student");                     Iterator attributes = startElement.getAttributes();                     String rollNo = attributes.next().getValue();                     System.out.println("Roll No : " + rollNo);                  } else if (qName.equalsIgnoreCase("firstname")) {                     bFirstName = true;                  } else if (qName.equalsIgnoreCase("lastname")) {                     bLastName = true;                  } else if (qName.equalsIgnoreCase("nickname")) {                     bNickName = true;                  } else if (qName.equalsIgnoreCase("marks")) {                     bMarks = true;                  }                          break;               case XMLStreamConstants.CHARACTERS:                  Characters characters = event.asCharacters();                  if(bFirstName){                     System.out.println("First Name: " + characters.getData());                     bFirstName = false;                  }                  if(bLastName){                     System.out.println("Last Name: " + characters.getData());                     bLastName = false;                  }                  if(bNickName){                     System.out.println("Nick Name: " + characters.getData());                     bNickName = false;                  }                  if(bMarks){                     System.out.println("Marks: " + characters.getData());                     bMarks = false;                  }                  break;               case XMLStreamConstants.END_ELEMENT:                  EndElement endElement = event.asEndElement();                  if(endElement.getName().getLocalPart().equalsIgnoreCase("student")){                     System.out.println("End Element : student");                     System.out.println();                  }                  break;            }             }      } catch (FileNotFoundException e) {         e.printStackTrace();      } catch (XMLStreamException e) {         e.printStackTrace();      }   }}

上述程序将产生以下结果 :

Start Element : studentRoll No : 393First Name: DinkarLast Name: KadNick Name: DinkarMarks: 85End Element : studentStart Element : studentRoll No : 493First Name: VineetLast Name: GuptaNick Name: VinniMarks: 95End Element : studentStart Element : studentRoll No : 593First Name: JasvirLast Name: SinghNick Name: JazzMarks: 90End Element : student