Java处理XML文档的SAX方式

package cn.rock.service;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import cn.rock.bean.Person;

public class SAXParseService {
 private List<Person> personList = null;
 private Person person = null;
 private String tag = null;

 /**
  * @param args
  */
 public void SAXParseXML() {
  
  
  SAXParserFactory factory = SAXParserFactory.newInstance();
  try {
   SAXParser parser = factory.newSAXParser();
   FileInputStream fileInputStream = new FileInputStream("E:\\Workspaces\\MyEclipse for Spring 8.6\\xml\\bin\\person.xml");
   SAXHandler saxHandler = new SAXHandler();
   parser.parse(fileInputStream, saxHandler);
   
   System.out.println("personList length: " + personList.size());
   
   Iterator iter = personList.iterator();
   while(iter.hasNext()){
    Person person = (Person)iter.next();
    System.out.println(person.toString());
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  
 }
 
 class SAXHandler extends DefaultHandler{

  @Override
  public void characters(char[] ch, int start, int length)
    throws SAXException {
   System.out.println("tag---" + tag);
   if(tag != null){
    String data = new String(ch, start, length);
    if("name".equals(tag)){
     System.out.println("name--- " + data);
     person.setName(data);
    }else if("age".equals(tag)){
     System.out.println("age--- " + data);
     person.setAge(new Short(data));
    }else if("address".equals(tag)){
     System.out.println("address--- " + data);
     person.setAddress(data);
    }
   }
  }

  @Override
  public void endDocument() throws SAXException {

   super.endDocument();
  }

  @Override
  public void endElement(String uri, String localName, String qName)
    throws SAXException {
//   System.out.println("endElement---uri: " + uri + " localName: " + localName + " qName: " + qName);
   if("person".equals(qName)){
    personList.add(person);
    person = null;
   }
//   System.out.println("endElement tag--- " + tag);
   tag = null;
  }

  @Override
  public void startDocument() throws SAXException {
   personList = new ArrayList<Person>();
  }

  @Override
  public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
//   System.out.println("startElement---uri: " + uri + " localName: " + localName + " qName: " + qName);

   if("person".equals(qName)){
    person = new Person();
    String id = attributes.getValue(0);
    person.setId(new Integer(id));
//    System.out.println("id--- " + id);
   }
   tag = qName;
  }
  
 }

}

你可能感兴趣的:(Java处理XML文档的SAX方式)