SAX解析xml
来源:互联网 发布:js style.display 编辑:程序博客网 时间:2024/06/14 21:24
第一步:创建xml
<?xml version="1.0" encoding="utf-8"?><students> <student stno="101"> <stName>张三</stName><age>23</age><address>河北省邯郸市</address><birthday>2000-10-10</birthday> </student> <student stno="102"> <stName>王小二</stName><age>26</age><address>辽宁省大连市</address><birthday>2000-10-10</birthday> </student> <student stno="103"> <stName>王小三</stName><age>28</age><address>河北张家口</address><birthday>2001-10-10</birthday> </student> <student stno="104"> <stName>李小虎</stName><age>25</age><address>河北省邯郸市</address><birthday>2000-10-10</birthday> </student></students>
第二部:创建实体类
package com.bochy.test;public class Student { private String stno; private String stName; private Integer age; private String address; private String birthday;public String getStName() {return stName;}public void setStName(String stName) {this.stName = stName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public String getStno() {return stno;}public void setStno(String stno) {this.stno = stno;} }
第三部:创建工具类
package com.bochy.test;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解析方式解析XML文件 * */public class SaxParseUtils extends DefaultHandler{ //重写相关方法定义解析的规则private List<Student> list=null;private Student student=null;private String xmlTag;//读取到的节点名称//xml文本文件开始加载时执行的方法@Overridepublic void startDocument() throws SAXException { list=new ArrayList<Student>();//文件开始加载时,此时实例化存储学生信息的list集合 }//xml文件加载结束后执行的方法@Overridepublic void endDocument() throws SAXException { }//遇到xml文件中开始标签节点执行的方法@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException { xmlTag=qName; if(qName.equals("student")){//如果此时遇到的是student标签 student=new Student(); String stno=attributes.getValue("stno");//获取stno属性值// System.out.println("stno:"+stno); student.setStno(stno);//封装学生编号 }}//遇到xml文件中结束标签执行的方法@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {xmlTag="";if(qName.equals("student")){list.add(student);} }//用于获取节点中文本内容的方法(实际用是获取文本内容,其实是将整体xml文件所有字符都放进了ch中)@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {String contentText= String.valueOf(ch, start, length);//获取stName的文本内容 if(xmlTag.equals("stName")){student.setStName(contentText); } if(xmlTag.equals("age")){ student.setAge(Integer.parseInt(contentText)); } if(xmlTag.equals("address")){ student.setAddress(contentText); } if(xmlTag.equals("birthday")){ student.setBirthday(contentText); } } //获取解析后数据public List<Student> getList(){return this.list;}}第四部:创建测试类
package com.bochy.test;import java.io.InputStream;import java.util.List;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.SAXException;public class Test {/** * Sax解析 * @throws SAXException * @throws ParserConfigurationException */public static void main(String[] args) throws Exception {//通过getClassLoader类加载器,相对路径找资源,此时找src路径下文件内容: InputStream inputStream= Test.class.getClassLoader().getResourceAsStream("com/bochy/test/Students.xml"); //定义解析工厂 SAXParserFactory parserFactory= SAXParserFactory.newInstance();//实例化解析工厂 //创建解析器 SAXParser saxParser= parserFactory.newSAXParser(); //实例化解析规则 SaxParseUtils utils=new SaxParseUtils(); //解析 saxParser.parse(inputStream, utils); List<Student> list=utils.getList(); for(int i=0;i<list.size();i++){ Student stu=list.get(i); System.out.println(stu.getStno()+":"+stu.getStName()+":"+stu.getAge()+":"+stu.getAddress()+":"+stu.getBirthday()); } }}
1 0
- [XML] SAX解析XML
- 【XML】SAX解析XML
- XML解析(SAX解析)
- XML解析:SAX解析
- Study SAX《SAX解析XML》
- 使用SAX解析XML
- 解析xml之--SAX
- SAX解析XML
- SAX解析XML
- xml文件解析-SAX
- 解析xml之--SAX
- 解析xml之--SAX
- 使用SAX解析XML
- XML学习《SAX解析》
- SAX解析XML例子
- java sax 解析 xml
- 使用SAX解析XML
- sax解析xml实例
- 元素分类--块级元素
- cookie机制与session机制的区别
- Spring Boot 入门
- poj3253Fence Repair(贪心,哈夫曼编码)
- poj 1061 扩展gcd
- SAX解析xml
- 利用linux shell script来测试linux c程序------脚本自动化测试用例代替手动测试用例
- Android ViewSwitcher简介和使用
- PHPExcel中文开发手册翻译版(2-2)
- 获取Android设备唯一标识码
- svn 提交代码时 报错: is scheduled for addition, but is missing
- gRPC动手实践
- 浅谈C++中指针和引用的区别
- OpenSceneGraph实现的NeHe OpenGL教程 - 第四十五课