sax 解析xml
发布时间:2020-12-16 00:32:04 所属栏目:百科 来源:网络整理
导读:sax方式解析xml的优点: 只要有jdk的存在,严格意义上来说是jre,它就可以运行,不依赖任何第三方的jar包。在移动设备上尤为广泛使用。比如Android就使用它来解析xml。当然Android更为推荐的是采用xmlpull来解析xml。这种方式也同样适合javase。我在后期会为
sax方式解析xml的优点:
只要有jdk的存在,严格意义上来说是jre,它就可以运行,不依赖任何第三方的jar包。在移动设备上尤为广泛使用。比如Android就使用它来解析xml。当然Android更为推荐的是采用xmlpull来解析xml。这种方式也同样适合javase。我在后期会为大家准备使用xmlpull解析xml的demo。敬请关注。 xml文件:
<?
xmlversion="1.0"encoding="UTF-8"
?>
xml对应的Javabean:
< root > student id ="1" group ="1" name 张三 </ sex 男 age 18 email zhangsan@163.com birthday 1987-06-08 memo 好学生 student ="2" ="2" 李四 女 lisi@163.com ="3" ="3" 小王 xiaowang@163.com ="4" ="4" 小张 xiaozhang@163.com ="5" ="5" 小明 xiaoming@163.com package com.parsexml.entity; public class Student{ private int id; group; Stringname; Stringsex; age; Stringemail; Stringmemo; Stringbirthday; getId(){ return id; } void setId( id){ this .id = getGroup(){ group; } setGroup( group){ .group StringgetName(){ name; } setName(Stringname){ .name StringgetSex(){ sex; } setSex(Stringsex){ .sex getAge(){ age; } setAge( age){ .age StringgetEmail(){ email; } setEmail(Stringemail){ .email StringgetMemo(){ memo; } setMemo(Stringmemo){ .memo StringgetBirthday(){ birthday; } setBirthday(Stringbirthday){ .birthday birthday; } } 开始解析: com.parsexml; import java.io.IOException; java.io.InputStream; java.util.ArrayList; java.util.List; javax.xml.parsers.ParserConfigurationException; javax.xml.parsers.SAXParser; javax.xml.parsers.SAXParserFactory; org.xml.sax.Attributes; org.xml.sax.SAXException; org.xml.sax.helpers.DefaultHandler; com.parsexml.entity.Student; /** *功能描述:采用sax方式解析XML<br> * * @author sxyx2008 * */ SaxParseXml extends DefaultHandler{ // 存放遍历集合 List < Student > list; 构建Student对象 Studentstudent; 用来存放每次遍历后的元素名称(节点名称) StringtagName; getList(){ list; } setList(List list){ .list StudentgetStudent(){ student; } setStudent(Studentstudent){ .student StringgetTagName(){ tagName; } setTagName(StringtagName){ .tagName 只调用一次初始化list集合 @Override startDocument() throws SAXException{ list new ArrayList (); } 调用多次开始解析 startElement(Stringuri,StringlocalName,StringqName, Attributesattributes) SAXException{ if (qName.equals( " )){ student Student(); 获取student节点上的id属性值 student.setId(Integer.parseInt(attributes.getValue( 0 ))); 获取student节点上的group属性值 student.setGroup(Integer.parseInt(attributes.getValue( 1 ))); } qName; } 调用多次 endElement(Stringuri,StringqName) )){ .list.add( .student); } null ; } 只调用一次 endDocument() SAXException{ } characters( char []ch, start,0)">length) ( != ){ Stringdate String(ch,start,length); .tagName.equals( .student.setName(date); } else .student.setSex(date); } .student.setAge(Integer.parseInt(date)); } .student.setEmail(date); } .student.setBirthday(date); } .student.setMemo(date); } } } static main(String[]args){ SAXParserparser ; try { 构建SAXParser parser SAXParserFactory.newInstance().newSAXParser(); 实例化DefaultHandler对象 SaxParseXmlparseXml SaxParseXml(); 加载资源文件转化为一个输入流 InputStreamstream SaxParseXml. .getClassLoader().getResourceAsStream( Student.xml ); 调用parse()方法 parser.parse(stream,parseXml); 遍历结果 list parseXml.getList(); for (Studentstudent:list){ System.out.println( id: + student.getId() tgroup: student.getGroup() tname: student.getName() tsex: student.getSex() tage: student.getAge() temail: student.getEmail() tbirthday: student.getBirthday() tmemo: student.getMemo()); } } catch (ParserConfigurationExceptione){ e.printStackTrace(); } (SAXExceptione){ e.printStackTrace(); } (IOExceptione){ e.printStackTrace(); } } } 效果图: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |