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(Java API for XML Processing)是Java平台上的XML处理标准,它提供了包括SAX在内的三种解析方式,即DOM(Document Object Model)、SAX和XSLT。本篇文章将深入探讨如何使用JAXP的SAX解析器来读取XML内容。 ...
本文将深入探讨XML的解析方式之一——JAXP(Java API for XML Processing),并提供一个简单的JAXP解析XML项目的概述。 ### JAXP简介 JAXP是Java平台上的标准API,它提供了处理XML的两种主要方法:解析和转换。在...
JAXP提供了解析XML文档和转换XML数据的能力,它包括三个主要组件:SAX(Simple API for XML)、DOM(Document Object Model)和XSLT(eXtensible Stylesheet Language Transformations)。在给定的压缩包文件中,...
使用JAXP解析XML文档的步骤大致如下: 1. 加载解析器工厂:`javax.xml.parsers.DocumentBuilderFactory`或`javax.xml.parsers.SAXParserFactory`。 2. 创建解析器:通过工厂的`newDocumentBuilder()`或`newSAXParser...
在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...
day02_xml *demo01.App1\App2\App3 使用jaxp开发包中的SAX方式解析xml文档,该方式只能读取文档 *demo4j01.App dom4j CURD XML *domo4j.ex 对dom4j 的封装例子
在Java中,使用SAX解析XML有以下几种方式: 1. **XMLReader**:这是SAX解析的核心组件,它提供了一组方法来配置解析器的行为。首先,我们需要通过`XMLReaderFactory`获取一个`XMLReader`实例,然后设置事件处理器...
标题"Jaxp_xml.rar_J2ME程序_j2me_j2me_xml_j2me网络"表明这个压缩包包含了一个示例,演示如何使用JAXP(Java API for XML Processing)在J2ME环境中解析XML文件。JAXP是Java平台上的一个标准接口,用于处理XML文档...
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
JAXP(Java API for XML Processing)是Java平台中处理XML文档的标准API之一。它主要包括两大块:DOM(Document Object Model)和SAX(Simple API for XML)。这两种方法各有优势:DOM适合于需要随机访问或修改XML...
在Java中,解析XML文档有多种方式,其中DOM(Document Object Model)和SAX(Simple API for XML)是最常见的两种。DOM是一种基于树形结构的XML处理方式,它将整个XML文档加载到内存中,形成一个完整的对象模型,...
在上述代码中,我们使用了JAXP(Java API for XML Processing)中的`DocumentBuilderFactory`和`DocumentBuilder`来创建并解析XML文件。`getElementsByTagName()`用于获取指定标签的节点列表,然后通过`item()`方法...
在IT领域,SAX(Simple API for XML)是一种流行的用于解析XML文档的事件驱动模型。相较于DOM(Document Object Model)解析器,SAX解析器在处理大型XML文件时具有更高的效率,因为它不需要将整个XML文档加载到内存...
通常,解析XML可能需要如`jaxp-1.3.jar`(Java API for XML Processing)、`xml-apis.jar`(XML API)、`sax.jar`(SAX解析器)或`dom4j.jar`(DOM4J库)等库。然而,提供的文件列表`Global.asax`、`gui.ascx`、`...
Java解析XML的四种经典方法主要涵盖DOM、SAX、StAX和JDOM这四种方式,每种方法都有其独特的优势和适用场景。 1)DOM(JAXP Crimson 解析器) DOM(Document Object Model)是W3C推荐的一种XML解析标准,它将XML...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
以下是一个简单的示例,演示如何使用这些库解析XML: ```java import org.w3c.dom.*; import javax.xml.parsers.*; import org.xml.sax.InputSource; import java.io.*; public class XMLParserExample { public ...
这意味着它并不直接提供XML解析的功能,而是建立在DOM和SAX之上,为开发者提供了更便捷地访问和控制这些解析器的手段。具体而言,JAXP通过一系列接口定义了如何创建和配置不同的解析器,如DOM解析器和SAX解析器,...
本文对四种主流的 XML 文件解析方案进行了比较,包括 DOM(JAXP Crimson 解析器)、SAX(JAXP Crimson 解析器)、JDOM 和 dom4j。比较的结果表明,DOM 解析方式具有较高的解析速度,但占用较高的内存,而 SAX 解析...