sax解析原理与案例
2024-08-27 18:22:11
package itcast.sax; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import org.xml.sax.SAXException;
import org.xml.sax.XMLReader; public class Demo { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
//1、创建解析工程
SAXParserFactory factory = SAXParserFactory.newInstance(); //2、得到解析器
SAXParser sp = factory.newSAXParser(); //3、得到读取器
XMLReader reader = sp.getXMLReader(); //4、设置内容处理器
reader.setContentHandler(new TagValueHandler()); //5、读取xml文档内容
reader.parse("src/book.xml");
} }
package itcast.sax; import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
//获取指定标签值
public class TagValueHandler extends DefaultHandler { private String currentTag;//记住当前解析到的是什么标签
private int needNumber=1;
private int currentNumber; @Override
public void characters(char[] ch, int start, int length) throws SAXException { if("editor".equals(currentTag)&¤tNumber==needNumber){
System.out.println(new String(ch,start,length));
} } @Override
public void endElement(String uri, String localName, String name)
throws SAXException { currentTag=null;
} @Override
public void startElement(String uri, String localName, String name,
Attributes atts) throws SAXException { currentTag=name;
if(currentTag.equals("editor")){
currentNumber++;
}
} }
package itcast.sax; import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException; public class ListHandle implements ContentHandler {
@Override
public void startElement(String uri, String localName, String name,
Attributes atts) throws SAXException { System.out.println("<" + name + ">"); for(int i=0;atts!=null&&i<atts.getLength();i++){
String attName = atts.getQName(i);
String attValue = atts.getValue(i);
System.out.println(attName+"="+attValue);
} } @Override
public void characters(char[] ch, int start, int length)
throws SAXException { System.out.println(new String(ch, start, length));
} @Override
public void endElement(String uri, String localName, String name)
throws SAXException {
System.out.println("<" + name + ">");
} @Override
public void startDocument() throws SAXException { } @Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub } @Override
public void endPrefixMapping(String arg0) throws SAXException {
// TODO Auto-generated method stub } @Override
public void ignorableWhitespace(char[] arg0, int arg1, int arg2)
throws SAXException {
// TODO Auto-generated method stub } @Override
public void processingInstruction(String arg0, String arg1)
throws SAXException {
// TODO Auto-generated method stub } @Override
public void setDocumentLocator(Locator arg0) {
// TODO Auto-generated method stub } @Override
public void skippedEntity(String arg0) throws SAXException {
// TODO Auto-generated method stub } @Override
public void startPrefixMapping(String arg0, String arg1)
throws SAXException {
// TODO Auto-generated method stub } }
<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书>
<bookname name="zero">java jiuyepeixunjiaocheng</bookname>
<editor>zhangxiaoxiang</editor>
<price>109yuan</price>
</书>
<书>
<bookname>javaWebprogramming</bookname>
<editor>lihuoming</editor>
<price>28.00yuan</price>
</书>
</书架>
最新文章
- WC2015 酱油记
- 富士通F-02D 1630万像素翻盖手机docomo官方解锁送充电器
- Windows 7,64位机器上安装DB2 7.2+FP7
- 【下有对策】verycd没有的资源有很多方法下载
- hdu 1348 Wall(凸包模板题)
- c语言中的结构体为值类型,当把一个结构体赋值给另一个结构体时,为值传递
- 前端 HTML基础
- Find Successor &; Predecessor in BST
- spring注解注入:<;context:component-scan>;使用说明
- myql 注意事项
- [ios3-地图] 如何在iOS地图上高效的显示大量数据 [转]
- c#中常用集合类和集合接口之集合类系列【转】
- 浅谈event.client、event.screen与event.offset
- 学习笔记DL005:线性相关、生成子空间,范数,特殊类型矩阵、向量
- Apache 配置方法(虚拟目录、域名、虚拟主机等)
- BZOJ1117 [POI2009]救火站Gas 贪心
- FlannBasedMatcher 立体匹配
- 设计模式学习心得<;汇总>;
- PCI 设备调试手段
- Docker技术入门与实战 第二版-学习笔记-2-镜像构建
热门文章
- http://www.cnblogs.com/baizhanshi/p/5593431.html
- Myeclipse中创建Maven工程的时候没有 webapp-javaee6
- Codeforces Round #366 Div.2[11110]
- Hadoop执行作业时报错:java.lang.OutOfMemoryError: Java heap space
- Javascript中括号“[]”的多义性
- Long-Short Memory Network(LSTM长短期记忆网络)
- KMP算法 hdu4686 Oulipo
- -webkit-text-size-adjust:none;
- Codeforces Round #210 (Div. 2) A. Levko and Table
- [Cocos2D-x For WP8]ParallaxNode视差