import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class SAXParser {
public static void main(String[] args) {
SAXParser sax = new SAXParser();
sax.parseXMLFile("student.xml");
}
/**
* 解析文档
* @param fileName XML文件的名字
*/
private void parseXMLFile(String fileName) {
try {
//通过指定解析器的名称来动态加载解析器
XMLReader parser = XMLReaderFactory.createXMLReader();
//处理内容前要注册内容管理器
parser.setContentHandler(new XMLContentHandler());
//开始解析文档
parser.parse(fileName);
}
catch (IOException e) {
e.printStackTrace();
}
catch (SAXException e) {
e.printStackTrace();
}
}
}
*****************************************
import org.xml.sax.*;
public class XMLContentHandler implements ContentHandler {
//DTD中定义的元素名
private static final String ELEMENT_NAME = "name";
private static final String ELEMENT_SEX = "sex";
private static final String ELEMENT_LESSON = "lesson";
private static final String ELEMENT_LESSON_NAME = "lessonName";
private static final String ELEMENT_LESSON_SCORE = "lessonScore";
private static final String ELEMENT_STUDENT = "student";
private static final String ELEMENT_LINE = "breakLine";
//当前元素的数据
private String currentData = "";
private String lessonName = "";
private String lessonScore = "";
/**
* 当其他某一个调用事件发生时,先调用此方法来在文档中定位。
* @param locator
*/
public void setDocumentLocator(Locator locator) {
}
/**
* 在解析整个文档开始时调用
*/
public void startDocument() throws SAXException {
System.out.println("XML文件开始解析");
}
/**
* 在解析整个文档结束时调用
*/
public void endDocument() throws SAXException {
System.out.println("XML文件解析结束");
}
/**
* 在解析命名空间开始时调用
*/
public void startPrefixMapping(String prefix, String uri) throws
SAXException {
}
/**
* 在解析命名空间结束时调用
*/
public void endPrefixMapping(String prefix) throws SAXException {
}
/**
* 在解析元素开始时调用
* @param namespaceURI
* @param localName
* @param qName
* @param atts
*/
public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {
System.out.println("Start");
}
/**
* 在解析元素结束时调用
* @param namespaceURI
* @param localName 本地名,如student
* @param qName 原始名
*/
public void endElement(String namespaceURI, String localName, String qName) throws
SAXException {
if (localName.equals(ELEMENT_NAME)) {
System.out.println(localName + ":" + currentData);
}
else if (localName.equals(ELEMENT_SEX)) {
System.out.println(localName + ":" + currentData);
}
else if (localName.equals(ELEMENT_LESSON_NAME)) {
this.lessonName = currentData;
}
else if (localName.equals(ELEMENT_LESSON_SCORE)) {
this.lessonScore = currentData;
}
else if (localName.equals(ELEMENT_LESSON)) {
System.out.println(lessonName + ":" + lessonScore);
}
else if (localName.equals(ELEMENT_LINE)) {
System.out.println("------------------------------------");
}
}
/**
* 取得元素数据
* @param ch
* @param start
* @param length
*/
public void characters(char[] ch, int start, int length) throws
SAXException {
System.out.println("gogo");
currentData = new String(ch, start, length).trim();
}
/**
* 取得元素数据中的空白
* @param ch
* @param start
* @param length
*/
public void ignorableWhitespace(char[] ch, int start, int length) throws
SAXException {
}
/**
* 在解析到处理指令时,调用此方法。
* 这些处理指令不包括XML的版权指令,它由解析器本身识别。
* @param target
* @param data
*/
public void processingInstruction(String target, String data) throws
SAXException {
}
/**
* 当未验证解析器忽略实体时调用此方法
* @param name
*/
public void skippedEntity(String name) throws SAXException {
}
}
分享到:
相关推荐
使用java语言对XML文档进行解析的示例,包括DOM,SAX方式,并包括使用jdom和jom4j框架进行XML解析或生成XML文档
用C#编写的XML解析器,DOM和SAX都有实现
Android_SAX_方式解析XML_字符串
DOM 解析 基本操作 SAX 解析 基本操作 上学期XML的一个小作业,都是一些基本操作,刚学XML的同学们拿来玩玩
java操作xml,包括dom、sax解析
android xml解析,sax pull dom三个解析
使用Sax解析XML,演示了如何使用SAX接口来解析xml,有主要方法的介绍。
java学习笔记——使用DOM解析XML和使用SAX解析XML
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
Java解析XML汇总DOM_SAX_JDOM_DOM4j_XPath 实例
XML通过SAX解析为JSON格式的文档 例子中的类稍微修改可以做做到公用
Sax解析XML文件解
通过DOM和SAX解析器,对XML文档进行解析。通过文档所在路径,读取xml文档,并显示相应结果
四种对XML文件的解析方法,分别是Dom,Jdom,SAX和Dom4j这四种方法,并实现了对xml文件的增删改查功能
XML解析之SAX解析DEMO,之前在播控上有介绍,但是代码排版太乱了,这个就是Android4.0网络编程中的SAX解析例子。
Java SAX解析Xml Demo(详细注释)
SAX解析超大XML文件 示例代码 SAX解析超大XML文件 示例代码 SAX解析超大XML文件 示例代码
jdom_SAX解析xml文件的jar包
使用SAX解析方式解析XML文件及输出数据。
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用