abc.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="1">
<name>张三</name>
<age>18</age>
</person >
<person id="2">
<name>李四</name>
<age>19</age>
</person>
<person id="3">
<name>王五</name>
<age>20</age>
</person>
<person id="4">
<name>赵六</name>
<age>21</age>
</person>
</persons>
定义实体类
User.java
package com.zf.pojo;
public class User {
private int userId;
private String userName ;
private int userAge;
public User(){}
public User(int userId){
this.userId = userId;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
@Override
public String toString() {
return "id:" + userId + " ,name:" + userName + " ,age:" + userAge;
}
}
实现DefaultHandler
package com.zf.test;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.zf.pojo.User;
public class SaxParserXMl extends DefaultHandler{
private List<User> userList = null; //保存解析出来的User对象
private User tempUser = null ;
private String currentTag = ""; //当前所在节点名称
//开始解析文档
@Override
public void startDocument() throws SAXException {
userList = new ArrayList<User>();
}
//开始元素节点
/**
*@param qName 节点名称
*@param attributes 节点所有属性
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if ("person".equals(qName)) {
tempUser = new User(Integer.parseInt(attributes.getValue("id")));
currentTag = "person";
}else if("name".equals(qName)){
currentTag = "name";
}else if("age".equals(qName)){
currentTag = "age";
}
}
//结束元素节点
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if ("person".equals(qName))
userList.add(tempUser);
currentTag = "";
}
//进入文本节点
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if (currentTag.equals("name")) {
tempUser.setUserName(new String(ch , start , length));
}else if(currentTag.equals("age")){
tempUser.setUserAge(Integer.parseInt(new String(ch , start , length)));
}
}
public List<User> getUserList(){
return userList;
}
}
开始解析:
public static void main(String[] args) throws Exception {
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxFactory.newSAXParser();
SaxParserXMl spx = new SaxParserXMl();
saxParser.parse(new File("src/abc.xml"), spx);
System.out.println(Arrays.toString(spx.getUserList().toArray()));
}