sax方式JAVA解析XML文件实例



sax方式JAVA解析XML文件实例 。JAVA 解析 XML 通常有两种方式,DOM 和 SAX。SAX同DOM一样也是一个访问XML文档的接口。SAX是Simple API for XML的缩写。以下是利用SAX读取xml文件的实例。

ReadXMLBySAX.java文件源码:

package com.cn.xml;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ReadXMLBySAX extends DefaultHandler {

// 格式化日期
static DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
private String value; // 声明一个变量,用来表示标记值

// 覆盖characters方法,该方法用来处理元素中的字符
public void characters(char[] ch, int start, int length) throws SAXException {
value = new String(ch, start, length);
}


// 覆盖endElement方法,用来处理当解析到元素的结束标签
public void endElement(String uri, String localName, String tagame) throws SAXException {
if (tagame.equals(“name”)) { // 判断如果标记为name
System.out.println(“书名” + value);
} else if (tagame.equals(“author”)) { // 判断如果标记为author
System.out.println(“作者: ” + value);
} else if (tagame.equals(“price”)) { // 判断如果标记为price
System.out.println(“价钱: ” + value);
} else if (tagame.equals(“press”)) { // 判断如果标记为press
System.out.println(“出版社: ” + value);
} else if (tagame.equals(“date”)) { // 判断如果标记为date
System.out.println(“出版时间: ” + value);
System.out.println();
}
}

// 覆盖startElement方法,用来处理解析到元素的开始标签
public void startElement(String uri, String localName, String tagName,
Attributes attributes) throws SAXException {
if (tagName.equals(“book”)) { // 判断元素名为book
System.out.println(“书籍信息: “);
}
}

public static void main(String[] args) {
// 获得XML文件的目录
File xmlFile = new File(“WebRoot/sax_xml.xml”);
// 通过单例模式创建一个 SAXParserFactory对象.
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
//通过factory对象的newSAXParser()方法创建SAXParser对象
SAXParser parser = factory.newSAXParser();
parser.parse(xmlFile, new ReadXMLBySAX()); // 解析指定的文件,定义处理解析事件的类
} catch (Exception e) {
e.printStackTrace();
}
}
}

sax_xml.xml文件源码:

<?xml version=”1.0″ encoding=”UTF-8″?>
<xml-body>
<book>
<name>Java开发大全</name>
<author>佚名</author>
<price>¥49.95</price>
<press>路透出版社</press>
<date>2010/02</date>
</book>

<book>
<name>JSP开发大全</name>
<author>佚名</author>
<price>¥49.50</price>
<press>路透出版社</press>
<date>2010/02</date>
</book>
</xml-body>