sax解释xml

原创 2012年03月27日 23:33:13

一、创建xml文件

<?xml version="1.0" encoding="UTF-8"?>
<persons>
 <person id="23">
  <name>liming</name>
  <age>30</age>
 </person>
 <person id="20">
  <name>lixiangmei</name>
  <age>25</age>
 </person>
</persons>

二、创建domain

public class Person {
 private Integer id;
 private String name;
 private Short age;
 
 public Person(){}
 
 public Person(Integer id, String name, Short age) {
  this.id = id;
  this.name = name;
  this.age = age;
 }
 
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Short getAge() {
  return age;
 }
 public void setAge(Short age) {
  this.age = age;
 }
 @Override
 public String toString() {
  return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";
 }
 
}

三、创建解释类

public class SAXPersonService {
 
 public List<Person> getPersons(InputStream inStream) throws Throwable{
  SAXParserFactory factory = SAXParserFactory.newInstance();
  SAXParser parser = factory.newSAXParser();
  PersonParser personParser = new PersonParser();
  parser.parse(inStream, personParser);
  inStream.close();
  return personParser.getPersons();
 }

 /*
  * 建一个内部类,继承DefaultHandler,
  * 重写DefaultHandler中的方法,作为回调使用
  */
 private final class PersonParser extends DefaultHandler{
  private List<Person> persons = null;
  private String tag = null;
  private Person person = null;

  public List<Person> getPersons() {
   return persons;
  }

  /*
   * 文档开始时调用
   * 即遇到<?xml version="1.0" encoding="UTF-8"?>时调用
   */
  @Override
  public void startDocument() throws SAXException {
   persons = new ArrayList<Person>();
  }
  
  /*
   * 遇到开始标签时调用
   */
  @Override
  public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
   if("person".equals(localName)){
    person = new Person();
    person.setId(new Integer(attributes.getValue(0)));
   }
   tag = localName;
  }
  
  /*
   * 遇到文本时调用
   */
  @Override
  public void characters(char[] ch, int start, int length)
    throws SAXException {
   if(tag!=null){
    String data = new String(ch, start, length);
    if("name".equals(tag)){
     person.setName(data);
    }else if("age".equals(tag)){
     person.setAge(new Short(data));
    }
   }
  }

  /*
   * 遇到结束标签时调用
   */
  @Override
  public void endElement(String uri, String localName, String qName)
    throws SAXException {
   if("person".equals(localName)){
    persons.add(person);
    person = null;
   }
   tag = null;
  }
 }
}

Android初级-解释XML文件-使用sax方式

今天是学习android第117天。 不扯具体技术,讲讲遇到的困难和解决方法。 学习这个课程,编写了样例发现,没有解释服务器搭建的XML文件。于是先排除服务器原因,直接使用浏览器打开服务器XML文件的...
  • lirufa
  • lirufa
  • 2015年06月06日 21:14
  • 208

利用反射机制,封装 SAX解释类,从而解释网络xml文件

利用反射机制,封装 SAX解释类,从而解释网络xml文件   个人觉得,在android应用开发领域中,与服务器交互是必不可少的。一般都是以解释xml为主要。其实获取网络上的xml和获取本地xml原...
  • MYBOYER
  • MYBOYER
  • 2013年05月31日 10:44
  • 468

SAX类解析XML

  • 2016年06月17日 12:03
  • 1.47MB
  • 下载

SAX解析XML POI解析Excel实例

  • 2017年09月29日 11:35
  • 18.54MB
  • 下载

XML之四种解析dom,sax,jdom,dom4j原理及性能比较

XML:四种解析器(dom,sax,jdom,dom4j)原理及性能比较   dom是解析xml的底层接口之一(另一种是sax).而jdom和dom4j则是基于底层api的更高级封装。dom是通...

Java SAX解析Xml文档Demo

  • 2017年08月18日 14:12
  • 13KB
  • 下载

Sax解析XML文件解析

  • 2015年09月03日 11:37
  • 1.4MB
  • 下载

理解SAX解析xml的工作原理

摘要: SAX以事件流来解析xml,边读边触发事件函数完成解析,适用于较大XML; DOM加载整个xml文件,最终在内存中创建一个DOM树,适合小XML文件,操作DOM节点比较简便。 dom比较好理解...

xml sax解析

  • 2016年07月29日 09:38
  • 9KB
  • 下载

XML SAX解析

  • 2014年09月19日 17:41
  • 1.11MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sax解释xml
举报原因:
原因补充:

(最多只允许输入30个字)