天天看点

android 经典笔记总结

答:下面是要解析的XML文件:
 <?xml version="1.0" encoding="UTF-8"?> 
 <persons> 
 <person id="1"> 
 <name>张三</name> 
 <age>22</age> 
 </person> 
 <person id="2"> 
 <name>李四</name> 
 <age>23</age> 
 </person> 
 </persons>
 复制代码
 定义一个名为Person的javaBean用于存放上面解析出来的xml内容
 publicclass Person {
 private Integer id;
 private String name;
 private Short age;


 public Integer getId() {
 return id;
 }


 public void setId(Integer id) {
 this.id = id;
 }


 public String getName() {
 return name;
 }


 publicvoid setName(String name) {
 this.name = name;
 }


 public Short getAge() {
 return age;
 }


 publicvoid setAge(Short age) {
 this.age = age;
 }
 }
 复制代码
  (1)使用SAX读取XML文件;它采用的是事件驱动,并不需要解析完整个文档,速度快并且占用内存少。需要为SAX提供实现ContentHandler接口的类。
 PersonDefaultHandler.java
 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.sinber.domain.Person;


 publicclass PersonDefaultHandler extends DefaultHandler {
 private List<Person> persons;
 private Person person ; //记录当前person
 private String perTag; //记录前一个标签的名称


 /**
 * 重写父类的开始文档方法。用于初始化
 */
 @Override
 publicvoid startDocument() throws SAXException {
 persons =new ArrayList<Person>();
 }


 @Override
 publicvoid startElement(String uri, String localName, String qName,
 Attributes attributes) throws SAXException {
 if("person".equals(localName)){
 Integer id =new Integer(attributes.getValue(0)); //取id
 person =new Person();
 person.setId(id);
 }
 perTag = localName;
 }


 /**参数:
 * ch 整个XML字符串
 * start 节点值在整个XML字符串中的索引位置
 * length 节点值的长度
 */