您好,欢迎访问一九零五行业门户网

XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象

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;//用于方法跨度使用变量。 @override public 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值 } } @override public 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); } } @override public 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文档封装成对象的内容。
其它类似信息

推荐信息