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)&&currentNumber==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>
</书>
</书架>

sax解析原理与案例的更多相关文章

  1. SAX解析原理示意

    SAX解析原理示意

  2. Day 28:SAX解析原理

    SAX解析 回顾DOM解析 DOM解析原理:一次性把xml文档加载进内存,然后在内存中构建Document树. 缺点: 不适合读取大容量的xml文件,容易导致内存溢出. SAX解析原理: 加载一点,读 ...

  3. SAX解析示例代码和原理

    import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; ...

  4. xml的SAX解析规则

    一,为什么要用它 1.1,讲解 DOM解析原理:一次性把xml文档加载进内存,然后在内存中构建Document树. 对内存要求比较要. 缺点: 不适合读取大容量的xml文件,容易导致内存溢出. SAX ...

  5. XML.03-DOM和SAX解析

    body,td { font-family: calibri; font-size: 10pt } XML.03-DOM和SAX解析 XML的DOM解析 解析 处理 回写 XML的SAX解析 SAX和 ...

  6. xml的SAX解析和dom解析的区别

    一,区别 DOM解析 SAX解析 原理: 一次性加载xml文档,不适合大容量的文件读取 原理: 加载一点,读取一点,处理一点.适合大容量文件的读取 DOM解析可以任意进行增删改成 SAX解析只能读取 ...

  7. 经典面试题:一张表区别DOM解析和SAX解析XML

                                                                                 ============DOM解析    vs ...

  8. java基础74 XML解析中的SAX解析相关知识点(网页知识)

    1.SAX解析工具 SAX解析工具:是Sun公司提供的,内置JDK中.org.xml.sax.*         点击查看: DOM解析相关知识:以及DOM和SAX解析的原理(区别) 2.SAX解析的 ...

  9. java基础71 XML解析中的【DOM和SAX解析工具】相关知识点(网页知识)

    本文知识点(目录):本文下面的“实例及附录”全是DOM解析的相关内容 1.xml解析的含义    2.XML的解析方式    3.xml的解析工具    4.XML的解析原理    5.实例    6 ...

随机推荐

  1. Angular JS学习之指令

    1.Angular JS通过称为指令的新属性来扩展HTML:通过内置的指令来为应用添加功能: 2.AngularJS指令:AngularJS指令是扩展的HTML属性,带有前缀ng-: **ng-app ...

  2. 01 HTML基础

    HTML就是超文本标记语言的简写,是最基础的网页语言. 通过标签定义的语言,代码都是由标签所组成的.(最重要的标签是定义标题.段落和换行的标签) 不区分大小写 head部分是给html页面增加一些辅助 ...

  3. Tomcat 配置 Context

    在 conf/Catalina/localhost/ 下添加 xml配置文件,文件名和站点名一致. 配置文件示例 <?xml version='1.0' encoding='utf-8'?> ...

  4. KMP(fail数组应用) LA 3026 Period

    题目传送门 题意:(训练指南P213) 求每个前缀的最短循环节 分析:利用失配函数的性质,如果i % (i - fail[i]) == 0,那么正好错位移动一个循环节长度. #include < ...

  5. ArcGIS 点到直线的距离

    /****点到直线的距离*** * 过点(x1,y1)和点(x2,y2)的直线方程为:KX -Y + (x2y1 - x1y2)/(x2-x1) = 0 * 设直线斜率为K = (y2-y1)/(x2 ...

  6. .net平台下C#socket通信(中)

    上篇.net平台下C#socket通信(上)介绍了socket通信的基本原理及最基本的通信方式.本文在此基础上就socket通信时经常遇到的问题做一个简单总结,都是项目中的一些小问题,拿来此处便于下次 ...

  7. 【Excel】Excel根据单元格背景色求和

    例:用公式计算单元格背景色为浅蓝色的数字之和    步骤一: Office 2003 Insert->Name->Define,Names in workbook输入getColor或ge ...

  8. BZOJ 1029 & 丝帛贪心

    题意: 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设 施受到了严重的损伤,如果不尽快修复的话,这些建 ...

  9. ReLu(Rectified Linear Units)激活函数

    论文参考:Deep Sparse Rectifier Neural Networks (很有趣的一篇paper) 起源:传统激活函数.脑神经元激活频率研究.稀疏激活性 传统Sigmoid系激活函数 传 ...

  10. android service 如何弹出dialog

    在service中弹出toast,需要使用handler, handler.post(new Runnable() { @Override public void run() { Toast.make ...