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

Java StAX Parser - 查询XML文档

Java StAX分析器查询XML文档 - 从简单和简单的步骤学习Java XML,从基本到高级概念,包括概述,Java XML分析器,DOM分析器,解析XML文档,查询XML文档,创建XML文档,修改XML文档,SAX Parser,JDOM XML Parser,StAX Parser,XPath Parser,DOM4J Parser,XSLT,JAXB。

演示示例

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

         dinkar      kad      dinkar      85               Vaneet      Gupta      vinni      95               jasvir      singn      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 StAXQueryDemo {   public static void main(String[] args) {      boolean bFirstName = false;      boolean bLastName = false;      boolean bNickName = false;      boolean bMarks = false;      boolean isRequestRollNo = false;            try {         XMLInputFactory factory = XMLInputFactory.newInstance();         XMLEventReader eventReader =         factory.createXMLEventReader(new FileReader("input.txt"));         String requestedRollNo = "393";                  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")) {                  Iterator attributes = startElement.getAttributes();                  String rollNo = attributes.next().getValue();                                       if(rollNo.equalsIgnoreCase(requestedRollNo)) {                     System.out.println("Start Element : student");                     System.out.println("Roll No : " + rollNo);                     isRequestRollNo = true;                  }               } 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 && isRequestRollNo) {                  System.out.println("First Name: " + characters.getData());                  bFirstName = false;               }               if(bLastName && isRequestRollNo) {                  System.out.println("Last Name: " + characters.getData());                  bLastName = false;               }               if(bNickName && isRequestRollNo) {                  System.out.println("Nick Name: " + characters.getData());                  bNickName = false;               }               if(bMarks && isRequestRollNo) {                  System.out.println("Marks: " + characters.getData());                  bMarks = false;               }               break;                              case XMLStreamConstants.END_ELEMENT:                  EndElement endElement = event.asEndElement();                                 if(endElement.getName().getLocalPart().equalsIgnoreCase(                  "student") && isRequestRollNo) {                  System.out.println("End Element : student");                  System.out.println();                  isRequestRollNo = false;               }               break;            }         }      } catch (FileNotFoundException e) {         e.printStackTrace();      } catch (XMLStreamException e) {         e.printStackTrace();      }   }}

这会产生以下结果 :

Start Element : studentRoll No : 393First Name: dinkarLast Name: kadNick Name: dinkarMarks: 85End Element : student