JAXP解析XML之SAX
1.获取SAXParserFactory工厂类。
2.获取SAXParser解析器。
3.获取XMLReader读写器。
4.设置内容处理器reader.setContentHandler(myHandler);
5.读取XML文档内容reader.parse("src/school.xml");
<?xml version="1.0" encoding="UTF-8" standalone="no"?><school>
<student>
<sno>09060034289</sno>
<name>犀利</name>
<address>广西南宁</address>
</student>
<student>
<sno>090600304210</sno>
<name>小李</name>
<address>日本</address>
</student>
</school>
package com.dhcool;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.junit.Test;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
public class SaxTest {
@Test
public void saxTest() throws ParserConfigurationException, SAXException, IOException{
//1.获取sax解析器工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
//2.获取sax解析器
SAXParser saxParser = factory.newSAXParser();
//3.获取读写器
XMLReader reader = saxParser.getXMLReader();
MyHandler myHandler = new MyHandler();
//4.设置内容处理器
reader.setContentHandler(myHandler);
//5.读取XML文档内容
reader.parse("src/school.xml");
//6.通过处理器获取list内容
List<Student> list = myHandler.getList();
System.out.println(list);
}
}
class MyHandler extends DefaultHandler{
private List<Student> list = new ArrayList<Student>();
private Student student;
private String currentTage;
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
currentTage = qName;
if("student".equals(currentTage)){
student = new Student();
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if("sno".equals(currentTage)){
student.setSno(new String(ch,start,length));
}
if("name".equals(currentTage)){
student.setName(new String(ch,start,length));
}
if("address".equals(currentTage)){
student.setAddress(new String(ch,start,length));
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("student".equals(qName)){
list.add(student);
student = null;
}
currentTage = null;
}
public List<Student> getList() {
return list;
}
}
package com.dhcool;
public class Student {
private String sno;
private String name;
private String address;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
分享到:
相关推荐
计算机科学与技术专业使用JAXP之SAX读取XML内容~~
day02_xml *demo01.App1\App2\App3 使用jaxp开发包中的SAX方式解析xml文档,该方式只能读取文档 *demo4j01.App dom4j CURD XML *domo4j.ex 对dom4j 的封装例子
用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)...
SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员...
与利用DOM、SAX、JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择...
XML_StuGradeExam_domXML解析技术之dom、Sax、dom4j技术演习以及Schema XML文档约束##XML解析开发包Jaxp(sun)Jdomdom4j####ExamExam是一个使用Xml持久化保存数据的xml数据库,该项目是演练dom解析XML技术很好的一个...
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定...
通常我们使用根据以下这些模型创建的API 来分析和操纵XML结构,这些模型可以是基于对象(基于树)的,如文档对象模型...而Java API for XML Parsing(JAXP)和MSXML提供了使用 DOM、SAX等处理XML文档的通用接口。
一个很好的用来解析XML文件的解析包 DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform ...
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。
DOM4J是 dom4j.org 出品的一个...DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。 DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。 Dom:把整个文档作为一个对象。
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4i和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过X Query...
本文简要的讨论了Java语言编程中...为了增强JAXP使用上的灵活性,开发者特别为JAXP设计了一个Pluggability Layer,在Pluggability Layer的支持之下,JAXP既可以和具体实现DOM API、SAX API 的各种XML解析器(XML Parser,
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...
第三部分介绍了DOM、SAX、JAXP、dom4j、, JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的, 方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而, XQuery则是一种新规范,通过...
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...