Java SAX parsing

sax parsing parsed line by line, the larger the amount of data
dom parse the entire data loading, for smaller data  sax Step 1, to obtain analytical factory the SAXParserFactory 2, factory for parser SAXParser 3, loading the document Document registration processor
 



 

1, a first write xml    

person.xml

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person>
        <name>至尊宝</name>
        <age>90000</age>
    </person>
    <person>
        <name>紫霞</name>
        <age>10000</age>
    </person>
</persons>

2, Persond class (preparation)

Persond.java

Package XML;
 / * 
 * SAX analysis by the analyzing line by line, the larger the amount of data 
 * DOM parsing the entire data loading, for smaller data 
 * 
 * SAX Step 
 * 1, the plant parsing the SAXParserFactory 
 * 2, factory for parser the SAXParser 
 *. 3, the processor loading the document document Register 
 * / 
public  class Persond {
     Private String name;
     Private  int Age; 
    
    public Persond () { 
        
    } 
    public Persond (String name, int Age) {
         Super ();
         the this .name = name;
         the this .age = Age; 
    } 
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

3, registration processor (stored object)

PersonHandler.java

package xml;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/*
 * 存储对象
 */
public class PersonHandler extends DefaultHandler {
    private List<Persond> persons;
    private Persond person;
    private String tag;  //记录标签名

    @Override
    public void startDocument() throws SAXException {
//        System.out.println("处理文档开始");
        persons=new ArrayList<Persond>();
    }
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        // TODO Auto-generated method stub
        System.out.println("开始一个元素"+qName);
        if(null!=qName) {
            tag=qName;
        }
        if(null!=qName&&qName.equals("person")) {
            person=new Persond();
        }
    }
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        String str=new String(ch,start,length);
        if(null!=tag&&tag.equals("name")) {
//            System.out.println(new String(ch,start,length));
            //存数据
            person.setName(str);
            
        }else if(null!=tag&&tag.equals("age")) {
            Integer age=Integer.valueOf(str);
            person.setAge(age);
        }
        
    }
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
//        System.out.println("结束一个元素"+qName);
        if(qName.equals("person")) {
            this.persons.add(person);
        }
        tag=null;
    }


    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        System.out.println("文档处理结束");
    }
    public List<Persond> getPersons() {
        return persons;
    }
    public void setPersons(List<Persond> persons) {
        this.persons = persons;
    }
    
    
}

4, officially resolved

ParseDemo01.java

Package XML; 

Import java.io.IOException;
 Import java.util.List; 

Import javax.xml.parsers.ParserConfigurationException;
 Import javax.xml.parsers.SAXParser;
 Import the javax.xml.parsers.SAXParserFactory; 

Import in org.xml.sax .SAXException; 

public  class ParseDemo01 {
     public  static  void main (String [] args) throws a ParserConfigurationException, a SAXException, IOException {
         // . 1, for acquiring and analyzing a SAXParserFactory protect plant type, so with his static method 
        SAXParserFactory factory = SAXParserFactory.newInstance () ;
         //2, taken from the factory to resolve the parser 
        SAXParser the parse = factory.newSAXParser ();
         // 3, loading the document Document registration processor
         // 4, the preparation processor 
        PersonHandler Handler = new new PersonHandler (); 
        parse.parse (Thread.currentThread ( ) .getContextClassLoader () 
                .getResourceAsStream ( "XML / Person.xml" ) 
                , Handler); 
        List <Persond> personds handler.getPersons = ();      // get a List object, which contains objects of two types Persond <person1, PERSON2> 
        
        for (P Persond: personds) { 
            System.out.println (p.getName () + "->" + p.getAge ()); 
        } 
    } 
}

Print results

 

Guess you like

Origin www.cnblogs.com/ssxblog/p/11331262.html