Sax解析xml文件
发布日期:2021-07-26 18:44:07
浏览次数:15
分类:技术文章
本文共 3679 字,大约阅读时间需要 12 分钟。
将所有文件放在包下即可运行。
解析过程:
1.获取解析工厂 2.从解析工厂中获得解析器 3.加载文档Document 编写处理器(重难点)Students.xml
王同 java 89 李佳 sql 58
Student.java
package sax;public class Student { private String name; private String course; private int score; private int id; public Student() { } public Student(String name, String course, int score, int id) { super(); this.name = name; this.course = course; this.score = score; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public int getId() { return id; } public void setId(int id) { this.id = id; }}
parse.java
package sax;import java.io.File;import java.io.IOException;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 parse { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{ //1.获取解析工厂 SAXParserFactory factory=SAXParserFactory.newInstance(); //2.从解析工厂获得解析器 SAXParser parse=factory.newSAXParser(); //3.加载文档Document 注册处理器 //4.编写处理器 StudentHandler handler=new StudentHandler(); //此写法针对并发操作,正常写xml路径即可 parse.parse(Thread.currentThread().getContextClassLoader() .getResourceAsStream("sax/Student.xml"),handler); System.out.println("\n"); Liststudents = handler.getStudents(); for(Student s:students){ System.out.println(s.getName()+"-->"+s.getCourse()+"-->"+s.getScore()); } } }
StudentHandler.java
package sax;/** * 处理器 */import java.util.ArrayList;import java.util.List;import org.dom4j.tree.DefaultAttribute;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class StudentHandler extends DefaultHandler { private Liststudents; private Student student; private String tag; // 记录标签名 @Override public void startDocument() throws SAXException { students = new ArrayList (); } // qName:标签名 // attributes:属性对象 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName != null) { tag = qName; } if (qName != null && qName.equals("student")) { student = new Student(); student.setId(Integer.parseInt(attributes.getValue("id"))); System.out.print("<" + qName + " " + attributes.getQName(0) + "=" + attributes.getValue("id") + ">"); } else { System.out.print("<" + qName + ">"); } } // 文本信息 @Override public void characters(char[] ch, int start, int length) throws SAXException { String str = new String(ch, start, length); if (null != tag && tag.equals("name")) { student.setName(str); } else if (null != tag && tag.equals("course")) { student.setCourse(str); } else if (null != tag && tag.equals("score")) { Integer score = Integer.valueOf(str); student.setScore(score); } System.out.print(str); } // 以“/”位结束标志 @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.print(" "); if (qName.equals("student")) { this.students.add(student); } tag = null; } @Override public void endDocument() throws SAXException { } public List getStudents() { return students; } public void setStudents(List students) { this.students = students; }}
转载地址:https://blog.csdn.net/qq_41877184/article/details/96006598 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月13日 10时29分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
miniport, port driver,disk.sys 之间的关系(转)
2019-04-28
Python标准库:内置函数tuple([iterable])
2019-04-28
Python标准库:内置函数type(object)
2019-04-28
Python标准库:内置函数vars([object])
2019-04-28
人人都懂的编程课(Python)
2019-04-28
reactos操作系统实现(100)
2019-04-28
reactos操作系统实现(101)
2019-04-28
Android培训班(75)Dalvik虚拟机的GetStaticMethodID函数
2019-04-28
新手也可以学会TensorFlow
2019-04-28
游戏制作之路(32)创建自定义的界面样式管理
2019-04-28
从小说里学会长大
2019-04-28
iBATIS&Spring合奏(一)--DAO
2019-04-28
iBATIS&Spring合奏(二)--Flex前端融合
2019-04-28
iBATIS&Spring合奏(三)--事务&动态SQL
2019-04-28
iBATIS&Spring合奏(四)--设计模式in iBATIS
2019-04-28
iBATIS&Spring合奏(五)--整合lucene搜索表字段内容
2019-04-28
寒假的唠叨
2019-04-28
Flex&iBatis&Hibernate&Spring—师徒奶茶系统V1总结
2019-04-28
Java 并发包之线程池和原子计数
2019-04-28
JVM StackMapTable 属性的作用及理解
2019-04-28