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");		List 
students = 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 List
students; 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Tomact环境配置
下一篇:Dom4J生成xml文件

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月13日 10时29分27秒