小编给大家分享一下XML解析中如何使用sax解析把xml文档封装成对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
Demo1类:
importjava.io.File; importjava.util.List; importjavax.xml.parsers.SAXParser; importjavax.xml.parsers.SAXParserFactory; /** *使用sax解析把xml文档封装成对象 *@authorAPPle * */ publicclassDemo3{ publicstaticvoidmain(String[]args)throwsException{ SAXParserparser=SAXParserFactory.newInstance().newSAXParser(); MyDefaultHandler3handler=newMyDefaultHandler3(); parser.parse(newFile("./src/contact.xml"),handler); List<Contact>list=handler.getList(); for(Contactcontact:list){ System.out.println(contact); } } }
MyDefaultHandler3类:
importjava.util.ArrayList; importjava.util.List; importorg.xml.sax.Attributes; importorg.xml.sax.SAXException; importorg.xml.sax.helpers.DefaultHandler; /** *SAX处理程序 *@authorAPPle * */ publicclassMyDefaultHandler3extendsDefaultHandler{ //存储所有联系人对象 privateList<Contact>list=newArrayList<Contact>(); publicList<Contact>getList(){ returnlist; } //保存一个联系人信息 privateContactcontact; /** *思路: * 1)创建Contact对象 *2)把每个contact标签内容存入到Contact对象 *3)把Contact对象放入List中 */ //用于临时存储当前读到的标签名 privateStringcurTag;//用于方法跨度使用变量。 @Override publicvoidstartElement(Stringuri,StringlocalName,StringqName, Attributesattributes)throwsSAXException{ curTag=qName; //读取到contact的开始标签创建Contact对象,这里说明了什么时候创建Content对象最合适。 if("contact".equals(qName)){ contact=newContact(); //设置id值 contact.setId(attributes.getValue("id"));//根据指定名字获取id值 } } @Override publicvoidcharacters(char[]ch,intstart,intlength) throwsSAXException{ //当前文本内容 Stringcontent=newString(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 publicvoidendElement(Stringuri,StringlocalName,StringqName) throwsSAXException{ //结束标签后就设置null。这里设置为null很重要。设置空是为了避免空格换行设置到对象的属性中,空格换行进去了就把原来放进去的数据覆盖掉。 curTag=null; //读到Contact的结束标签把content对象放入List中 if("contact".equals(qName)){ list.add(contact); } } }
以上是“XML解析中如何使用sax解析把xml文档封装成对象”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
xml解析中如何使用dom4j的api对xml文件进行CRUD
这篇文章将为大家详细讲解有关xml解析中如何使用dom4j的api对xml文件进行CRUD,小编觉得挺实用的,因此分享给大家做个参...
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议