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