image.png

使用SAX解释:

image.png

image.png

import java.io.IOException;

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; public class XmlSax { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { // TODO Auto-generated method stub SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parse = factory.newSAXParser(); PHandler handler = new PHandler(); parse.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream(“com/leon/p.xml”), handler); } } class PHandler extends DefaultHandler{ @Override public void startDocument() throws SAXException { System.out.println(“——文档解释开始——“); } @Override public void endDocument() throws SAXException { System.out.println(“——文档解释结束——“); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println(qName + “->解释开始” ); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println(qName + “->解释结束” ); } @Override public void characters(char[] ch, int start, int length) throws SAXException { String msg = new String(ch, start, length).trim(); if(msg.length() > 0) { System.out.println(“内容为:” + msg); }else { System.out.println(“内容为:” + “空”); } }

}

结果
image.png


数据处理:

```java public class XmlSax { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { // TODO Auto-generated method stub SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parse = factory.newSAXParser();

  1. PHandler handler = new PHandler();
  2. parse.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("com/leon/p.xml"), handler);
  3. List<Person> list = handler.getList();
  4. System.out.println(list.size());
  5. for(Person p : list) {
  6. System.out.println(p.getName() + "-->" + p.getAge());
  7. }
  8. }

}

> 

> 

> 

> ```java
class PHandler extends DefaultHandler{
    private List<Person> list;
    private Person person;
    private String tag;

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

    @Override
    public void endDocument() throws SAXException {    }

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        if(qName.equals("person")) {
            person = new Person();
        }
        if(qName.equals("name")) {
            tag = "name";
        }
        if(qName.equals("age")) {
            tag = "age";
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        if(qName.equals("person")) {
            list.add(person);
        }
        tag = null;
    }

    @Override
    //读取标签之间的内容,不管标签是否一一对应
    public void characters(char[] ch, int start, int length) throws SAXException {
        String msg = new String(ch, start, length).trim();
        if(tag != null) {
            if(tag.equals("name")) {
                person.setName(msg);
                //System.out.println("name =" + msg);
            }
            if(tag.equals("age")) {
                person.setAge(Integer.valueOf(msg));
                //System.out.println("age = "+ msg);
            }
        }
    }

    public List<Person> getList() {
        return list;
    }
}

结果
image.png