sax解析xml
2015-10-17 11:02
337 查看
sax解析xml
xml<?xml version="1.0" encoding="utf-8"?> <!--引入dtd去约束该xml文件--> <班级> <学生 性别="男" 学号="sp001" 大哥="sp002 sp001" 地址="北京"> <名字>周星驰</名字> <介绍>学习刻苦</介绍> <年龄>23</年龄> </学生> <学生 性别="女" 学号="sp002" 大哥="sp001"> <名字>林青霞</名字> <介绍>学习刻苦</介绍> <年龄>23</年龄> </学生> </班级>
sax解析代码
import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * */ public class SaxXml { /** * @param args * @throws Exception * */ //使用sax解析xml public static void main(String[] args) throws Exception{ //1、创建SAXParserFactory SAXParserFactory spf=SAXParserFactory.newInstance(); //2、创建 SAXParser解析器 SAXParser saxParser=spf.newSAXParser(); //把xml文件与事件处理对象相连 saxParser.parse("src/myClass2.xml",new MyDefaultHandler2()); } } /** * */ //事件处理类 class MyDefaultHandler extends DefaultHandler{ //发现文档开始 @Override public void startDocument() throws SAXException { System.out.println("文档开始"); super.startDocument(); } //发现xml里的一个元素 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println("元素名称="+qName); super.startElement(uri, localName, qName, attributes); } //发现xml里面的文本 @Override public void characters(char[] ch, int start, int length) throws SAXException { String content=new String(ch,start,length); if (!content.trim().equals("")) { System.out.println(new String(ch,start,length)); } super.characters(ch, start, length); } //发现xml中一个元素结束 @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); } //发现文档结束 @Override public void endDocument() throws SAXException { System.out.println("结束文档"); super.endDocument(); } } class MyDefaultHandler2 extends DefaultHandler{ boolean isName=false; boolean isAge=false; //发现文档开始 @Override public void startDocument() throws SAXException { super.startDocument(); } //发现xml里的一个元素 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equals("名字")){ isName=true; }else if(qName.equals("年龄")){ isAge=true; } super.startElement(uri, localName, qName, attributes); } //发现xml里面的文本 @Override public void characters(char[] ch, int start, int length) throws SAXException { String content=new String(ch,start,length); if (!content.trim().equals("")&&(isName||isAge)) { System.out.println(new String(ch,start,length)); } isName=false; isAge=false; super.characters(ch, start, length); } //发现xml中一个元素结束 @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); } //发现文档结束 @Override public void endDocument() throws SAXException { super.endDocument(); } }
相关文章推荐
- android 软键盘 InputMethodManager
- MySQL 小知识点(记录一下)
- Android APP build报错:Unable to resolve target 'android-17'
- The type org.springframework.beans.BeansException cannot be resolved. It is indirectly referenced fr
- 在linux下手动安装mongodb
- SQL CREATE INDEX 语句 高级教程
- CSS中display对布局的影响以及元素display的默认值
- 二叉搜索树
- memmove和memcpy
- Android架构
- 小学奥数 余数相同问题
- leetcode_07_Reverse Integer (easy)
- SPOJ GSS7 Can you answer these queries VII
- hdoj 2389 Rain on your Parade 【HK】
- leetcode之Reverse Interger
- thinkphp分页实现
- 浅析Java入门教程之字符常量
- Ubuntu系统下安装curl
- 选择排序—堆排序(Heap Sort)
- 16.Merge Two Sorted Lists