sax解析xml文档

http://www.cnblogs.com/nerxious/archive/2013/05/03/3056588.html

转载自大神的自动化博客

我们知道解析xml文档有两种方式,一种是sax解析,一种是Dom解析。

二者的区别是;dom解析只能解析小文本,但是可以增删改查;sax解析可以解析大文本,但是修改不方便。

本文主要讲解sax解析:

我们知道xml文档是一种常用的保存数据的文档格式,效率高,且格式清楚,明了。

通过sax来完成对xml文档中数据的解析,来获取到xml中保存的数据,得到我们想要的东西。

sax解析主要依靠抽象类SAXParserFactory和DefaultHandler类的几个主要的方法:

characters()、startDocument() 、 endDocument()、 startElement()、 endElement()。。。

举例在startElement方法中有四个参数,startElement(startString uri,String localName,String qName,Attributes attributes)

贴核心代码:



public class SaxHandler1 extends DefaultHandler {

@Override
public void characters(char[] arg0, int arg1, int arg2) throws SAXException {   
System.out.print(new String(arg0, arg1, arg2));
super.characters(arg0, arg1, arg2);
}

@Override
public void endDocument() throws SAXException {   //结束文档解析的收尾方法
System.out.println("\n结束解析");
super.endDocument();
}

@Override
public void endElement(String arg0, String arg1, String arg2) throws SAXException {   //结束元素解析的收尾动作
System.out.print("</");
System.out.print(arg2);
System.out.print(">");
super.endElement(arg0, arg1, arg2);
}

@Override
public void startDocument() throws SAXException {      //开始文档解析的动作
System.out.println("开始解析");
String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
System.out.println(s);
super.startDocument();     //调用父类的startDocument方法,开始解析文档
}

@Override
public void startElement(String arg0, String arg1, String arg2,
Attributes arg3) throws SAXException {

System.out.print("<");
System.out.print(arg2);

if (arg3 != null) {
for (int i = 0; i < arg3.getLength(); i++) {
System.out.print(" " + arg3.getQName(i) + "=\"" + arg3.getValue(i) + "\"");
}
}
System.out.print(">");
super.startElement(arg0, arg1, arg2, arg3);
}

}

以上是sax的核心代码。接下来是XML文件,

<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="001">
<title>Harry Potter</title>
<author>J K. Rowling</author>
</book>
<book id="002">
<title>Learning XML</title>
<author>Erik T. Ray</author>
</book>
</books>

以下是测试核心代码

public class TestDemo {

public static void main(String[] args) throws Exception {

SAXParserFactory factory = SAXParserFactory.newInstance();         //实例化SAXFactoryFactory对象

SAXParser parser = factory.newSAXParser();          //创建SAXParser解析器

File f = new File("Test.xml");                  //获取要解析的File地址


SaxHandler dh = new SaxHandler();      //生成解析器


parser.parse(f, dh);    //解析文档
}
}

结果截图:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值