Demo1类:


import java.io.File;import java.util.List;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;/** * 使用sax解析把 xml文档封装成对象 * @author APPle * */public class Demo3 {public static void main(String[] args)throws Exception {SAXParser parser = SAXParserFactory.newInstance().newSAXParser();MyDefaultHandler3 handler = new MyDefaultHandler3();parser.parse(new File("./src/contact.xml"), handler);List<Contact> list = handler.getList();for (Contact contact : list) {System.out.println(contact);}}}


MyDefaultHandler3类:


import java.util.ArrayList;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;/** * SAX处理程序 * @author APPle * */public class MyDefaultHandler3 extends DefaultHandler {//存储所有联系人对象private List<Contact> list = new ArrayList<Contact>();public List<Contact> getList(){return list;}//保存一个联系人信息private Contact contact;/** * 思路:  * 1)创建Contact对象 *  2)把每个contact标签内容存入到Contact对象 *  3)把Contact对象放入List中 *///用于临时存储当前读到的标签名private String curTag;//用于方法跨度使用变量。@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {curTag = qName;//读取到contact的开始标签创建Contact对象,这里说明了什么时候创建Content对象最合适。if("contact".equals(qName)){contact = new Contact();//设置id值contact.setId(attributes.getValue("id"));//根据指定名字获取id值}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {//当前文本内容String content = new String(ch,start,length);//String类构造方法获取到当前文本的额内容。if("name".equals(curTag)){contact.setName(content);}if("age".equals(curTag)){contact.setAge(content);}if("phone".equals(curTag)){contact.setPhone(content);}if("email".equals(curTag)){contact.setEmail(content);}if("qq".equals(curTag)){contact.setQq(content);}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {//结束标签后就设置null。这里设置为null很重要。设置空是为了避免空格换行设置到对象的属性中,空格换行进去了就把原来放进去的数据覆盖掉。curTag = null;//读到Contact的结束标签把content对象放入List中if("contact".equals(qName)){list.add(contact);}}}


以上就是XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. Java&Xml教程(八)使用JDOM将Java对象转换为XML
  2. Java&Xml教程(十一)JAXB实现XML与Java对象转换
  3. Java对象、Json、Xml转换工具Jackson使用
  4. ajax的xmlHttpRequest对象
  5. 利用XMLSerializer将对象串行化到XML
  6. Web设计中如何使用XML数据源对象详细介绍
  7. XmlSerializer 对象的Xml序列化和反序列化的示例代码分析
  8. XML中的树形结构与DOM文档对象模型的示例代码(图)
  9. XML中的标签与元素的使用具体介绍

随机推荐

  1. 或者不使用Laravel的有说服力的关系查询
  2. thinkphp3.2【空操作和空控制器使用】
  3. python django 基本测试 及调试 201812
  4. phpcms v9访问单网页一级栏目自动跳转到
  5. eclipse 编写php错误
  6. phpBB3导入帖子的Python脚本
  7. 如何将Composer中的CakePHP插件安装到app
  8. 如何使用background-image:用php
  9. 在Apache及IIS6.0中codeigniter去掉 URL
  10. php面向对象之抽象类和接口理解