【Java开源代码栏目提醒】:本文主要为网学会员提供TextSAXParseXML.java,希望对需要TextSAXParseXML.java网友有所帮助,学习一下!
package com.zf.s12;//创建一个包
import java.io.File;//引入类
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.XMLFilter;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLFilterImpl;
import org.xml.sax.helpers.XMLReaderFactory;
class SAXFilter extends XMLFilterImpl {// 扩展相应过滤器类实现操作XML文档
private String currentElement;// 当前元素
public SAXFilter(XMLReader parent) {// 带参数构造方法
super(parent);// 继承父类
}
public void startElement(String url, String elementName, String fullName,
Attributes attributes) throws SAXException {// 重写,过滤掉元素<flower>的开始事件
currentElement = elementName;
if (!elementName.equals("flower")) {// 判断节点
super.startElement(url, elementName, fullName, attributes);// 调用父方法
}
}
public void endElement(String namespaceURI, String localName,
String fullName) throws SAXException {// 过滤掉元素<flower>的结束事件
if (!localName.equals("flower")) {// 判断节点
super.endElement(namespaceURI, localName, fullName);// 调用父方法
}
}
public void characters(char[] buffer, int start, int length)
throws SAXException {// 过滤掉元素<flower>中的内容
if (!currentElement.equals("flower")) {// 判断节点
super.characters(buffer, start, length);// 调用父方法
}
}
}
class SAXHandler extends DefaultHandler {// 扩展相应类使用SAX读取XML文件
public void startDocument() throws SAXException // 重写的方法,用于处理文档解析开始事件
{
System.out.println("<?xml version=\"1.0\" encoding='gb2312'?>");// 输出XML文档头部
}
public void processingInstruction(String target, String data)
throws SAXException {// 重写方法,处理解析中产生的处理指令事件
System.out.println("<?" + target + " " + data + "?>");
}
public void startElement(String uri, String localName, String qName,
Attributes attrs) throws SAXException {// 重写的方法
// 处理元素开始事件,从参数中可以获得元素所在名称空间的uri,元素名称,属性列表等信息
System.out.print("<" + qName);
int len = attrs.getLength();
for (int i = 0; i < len; i++) {
System.out.print(" ");
System.out.print(attrs.getQName(i));
System.out.print("=\"");
System.out.print(attrs.getValue(i));
System.out.print("\"");
}
System.out.print(">");
}
public void characters(char[] ch, int start, int length)
throws SAXException {// 重写的方法处理元素的字符内容,从参数中可以获得内容
System.out.print(new String(ch, start, length));
}
public void endElement(String uri, String localName, String qName)
throws SAXException {// 重写的方法处理元素结束事件,从参数中可以获得元素所在名称空间的uri,元素名称等信息
System.out.print("</" + qName + ">");
}
}
public class TextSAXParseXML {// 操作使用SAX解析XML文档的类
public static void oneCreateSAXParser(String fileName) {// 第一种构造解析器的方法
SAXParserFactory spf = SAXParserFactory.newInstance();// 创建SAX解析器工厂实例
try {
SAXParser sp = spf.newSAXParser();// 创建SAX解析器
sp.parse(new File(fileName), new SAXHandler());// 开始解析文档
} catch (Exception e) {// 捕获异常
e.printStackTrace();
}
}
public static void twoCreateSAXParser(String fileName) throws Exception {// 第二种构造解析器的方法
XMLReader reader = XMLReaderFactory// 根据XML读取工厂类创建XML读取对象
.createXMLReader("org.apache.xerces.parsers.SAXParser");
ContentHandler contentHandler = new SAXHandler();// 创建ContentHandler的实例
reader.setContentHandler(contentHandler);// 在reader中注册实例化的ContentHandler
reader.parse(fileName);// 开始解析文档
}
public static void threeCreateSAXParser(String fileName) throws Exception {// 第三种构造解析器的方法
XMLReader reader = XMLReaderFactory// 根据XML读取工厂类创建XML读取对象
.createXMLReader("org.apache.xerces.parsers.SAXParser");
XMLFilter filter = new SAXFilter(reader); // // 初始化过滤器
DefaultHandler defaultHandler = new SAXHandler(); // 为过滤后的事件流设置DefaultHandler
filter.setContentHandler(defaultHandler); // 为过滤后的事件流设置defaultHandler
filter.setErrorHandler(defaultHandler); // 为过滤后的事件流设置ErrorHandler
filter.parse(fileName);// 开始解析文档
}
public static void main(String args[]) {// java程序主入口处
String fileName = "F:/test.xml";// 文件
try {
System.out.println("1.运用扩展XMLFilterImpl过滤类实现SAX解析XML文档");
threeCreateSAXParser(fileName);
System.out.println();
System.out.println("2.运用扩展DefaultHandler类实现SAX解析XML文档");
oneCreateSAXParser(fileName);
System.out.println();
System.out.println("3.运用创建ContentHandler类实现SAX解析XML文档");
twoCreateSAXParser(fileName);
} catch (Exception e) {// 捕获异常
System.out.println("SAX解析XML文档出错:" + e.getMessage());
System.exit(1);// 退出原因返回给系统,0表示正常退出,1表示非正常
}
}
}
上一篇:
TextSample.java
下一篇:
Function GetIp(IP) 获得ip asp