sax解析是通过事件处理。

案例如下所示:

public class SaxExercise {



public static void main(String[] args) throws Throwable, SAXException {

//1.通过newinstance获得一个工厂

SAXParserFactory factory = SAXParserFactory.newInstance();

//2.通过一个工厂获得一个解释器

SAXParser saxParser = factory.newSAXParser();

//3.解析文档

//parse(需要解析的文档,一个继承defaulthandle的子类对象)

saxParser.parse("person.xml", new MydefaultHandle());

}


穿件的defaultHandle的子类对象的五个方法如下所示:

package itcast.cn;


import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;


public class MydefaultHandle extends DefaultHandler {

   @Override

public void startDocument() throws SAXException {

// 文档开始通知

super.startDocument();

}

  @Override

public void endDocument() throws SAXException {

// 文档借宿

super.endDocument();

}

  @Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

// 元素开始

  //qname是标签的名字

super.startElement(uri, localName, qName, attributes);

if (qName.equals("name")||qName.equals("age")) {

System.out.print(qName+"=");

}else {

System.out.println(qName);

}

}

  @Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

//元素结束

super.endElement(uri, localName, qName);

}

  @Override

public void characters(char[] ch, int start, int length)

throws SAXException {

// 处理文档

super.characters(ch, start, length);

//下面是将一个字符串数组转换为一个字符串的方法

String content = new String(ch, start, length).trim();

if (content.length()>0) {

System.out.println(content);

}

}

}