步骤:
- 创建解析器工厂
- 根据解析器工厂创建解析器
- 执行parse操作
- 创建一个类,继承DefaultHandler
- 重写类中的方法
下述代码实现了通过sax,获取xml中所有name标签的text属性:
public class saxTest {
public static void main(String[] args) throws Exception{
//1、创建解析器工厂
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
//2、根据解析器工厂创建解析器
SAXParser saxParser = saxParserFactory.newSAXParser();
//3、执行parse操作
saxParser.parse("person.xml",new MyDefault());
}
}
//4、创建一个类,继承DefaultHan
class MyDefault extends DefaultHandler{
boolean flag = false;
//5、重写类的方法
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(qName.equals("name")) {
flag = true;
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if(flag) {
System.out.println(new String(ch,start,length));
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if(qName.equals("name")) {
flag = false;
}
}
}
相对应的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<p>
<name>张三</name>
<age>30</age>
</p>
<p>
<name>李四</name>
<age>10</age>
</p>
</person>