会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
spring学习笔记
SAX解析xml文档
friends.xml
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?> <friends date="2012"> <!--此处为注释--> <friend id="1"> <姓名>小红</姓名> <QQ>1429286632</QQ> <!--address>上海</address--> </friend> <friend> <姓名>小平</姓名> <QQ>785066655</QQ> <address>北京</address> </friend> <friend> <姓名 mark="hello">小敏</姓名> <QQ>980404356</QQ> <address>深圳</address> </friend> <friend> <姓名>小良</姓名> <QQ>523569240</QQ> <address>广州</address> </friend> <friend> <姓名>小健</姓名> <QQ>1138045755</QQ> <address>赣州</address> </friend> </friends></span>
SAXParseXML :
<span style="font-size:18px;">import java.io.File ; import java.util.Stack ; import javax.xml.parsers.SAXParserFactory ; import javax.xml.parsers.SAXParser ; import org.xml.sax.Attributes ; import org.xml.sax.SAXException ; import org.xml.sax.helpers.DefaultHandler ; //利用SAX解析xml文档,SAX是基于事件处理的,占内存比较小 //解析过了的,就不能在回头解析 public class SAXParseXML { public static void main(String[] args) throws Exception { //获取SAX解析器工厂 SAXParserFactory spf = SAXParserFactory.newInstance() ; //获取具体的SAX解析器 SAXParser ap = spf.newSAXParser() ; ap.parse(new File("friends.xml"), new MyDefaultHandler()) ; } } class MyDefaultHandler extends DefaultHandler { //定义一个栈来存取解析出来的信息 private Stack<String> stack = new Stack<String>() ; private String name = null ; private String qq = null ; private String address = null ; //重写父类的方法 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { //把元素压栈 stack.push(qName) ; for (int i = 0; i < attributes.getLength() ; i++ ) { //获取属性名字 String attrName = attributes.getQName(i) ; //获取属性的值 String attrValue = attributes.getValue(i) ; System.out.println(attrName + " = " + attrValue) ; } } @Override public void characters(char[] ch, int start, int length) throws SAXException { //查看堆栈顶部的对象,但不从堆栈中移除它。 String s = stack.peek() ; if ("姓名".equals(s)) { name = new String(ch, start, length) ; } else if ("QQ".equals(s)) { qq = new String(ch, start, length) ; } else if ("address".equals(s)) { address = new String(ch, start, length) ; } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // 移除堆栈顶部的对象 stack.pop() ; if ("friend".equals(qName)) { System.out.println("姓名 :" + name) ; System.out.println("QQ :" + qq) ; System.out.println("address :" + address) ; System.out.println() ; } } }</span>
posted on
2012-02-27 20:37
spring学习笔记
阅读(
240
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
导航
博客园
首页
联系
订阅
管理
公告