package cn.liuning.sax;

 import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler; public class Demo1
{
/*
* sax解析xml文档
*/
public static void main(String[] args) throws Exception {
//1.创建解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance(); //2.得到解析器
SAXParser sp = factory.newSAXParser(); //3.得到读取器
XMLReader reader = sp.getXMLReader(); //4.设置内容处理器
reader.setContentHandler(new TagValueHandler()); //5.读取xm文档内容
reader.parse("src/book.xml");
}
}
//得到xml文档的所有内容,实现接口ContentHandler
class ListHandler implements ContentHandler
{
@Override
public void setDocumentLocator(Locator locator) {
// TODO 自动生成的方法存根
}
@Override
public void startDocument() throws SAXException {
// TODO 自动生成的方法存根
}
@Override
public void endDocument() throws SAXException {
// TODO 自动生成的方法存根
}
@Override
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
// TODO 自动生成的方法存根
}
@Override
public void endPrefixMapping(String prefix) throws SAXException {
// TODO 自动生成的方法存根
}
@Override//开始标签
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
System.out.println("<" + qName + ">");
//获取标签属性
for(int i=0;atts != null & i<atts.getLength();i++) //null
{
String attName = atts.getQName(i);
String attValue = atts.getValue(i); System.out.println(attName + "=" + attValue);
}
}
@Override//结束标签
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("<" + qName +">");
}
@Override//内容
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.println(new String(ch,start,length));
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
}
@Override
public void processingInstruction(String target, String data)
throws SAXException {
// TODO 自动生成的方法存根
}
@Override
public void skippedEntity(String name) throws SAXException {
// TODO 自动生成的方法存根
}
}
//不实现ContentHandler接口,因为里面有很多用不到的方法,sun公司已经写了缺省的是吸纳类
//阿么我只要继承然后写自己需要的方法就可以了。右键点击源码-覆盖实现方法 //获取指定标签的值
class TagValueHandler extends DefaultHandler{ private String currentTag; //记住当前解析到的是什么标签
private int needNumber = 1; //记住想获取第几个作者标签的值
private int currnetnumber=0;//当前解析到的是第几个 @Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException { currentTag = qName;
if(currentTag.equals("CreateTime")){
currnetnumber++;
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
currentTag = null;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException { if("CreateTime".equals(currentTag) && currnetnumber==needNumber){
System.out.println(new String(ch,start,length));
}
}
}

使用JAXP进行sax解析的更多相关文章

  1. JAXP的SAX解析

    * 使用Sax解析XML文档  *   * 使用Sax解析文档和DOM解析不一样.  * 概述:  * 是一种XML解析的替代方法.相比于DOM,SAX是一种速度更快,更有效的方法.它逐行扫描文档,一 ...

  2. XML案例(使用JAXP进行SAX解析)

    1.Book.java package cn.itcast.sax; public class Book { private String name; private String author; p ...

  3. JAXP进行DOM和SAX解析

    1.常用XML的解析方式:DOM和SAX 1)DOM思想:将整个XML加载内存中,形成文档对象,所以对XML操作都对内存中文档对象进行. 2)SAX思想:一边解析,一边处理,一边释放内存资源---不允 ...

  4. 17.JAVA-Dom、Sax解析XML详解

    在JAVA中,解析有三种方式: Dom解析(支持改删,耗内存). Sax解析(不支持改删,不耗内存). Pull解析(在Android中推荐使用的一种解析XML的方式,在下章学习). 1.支持Dom与 ...

  5. 用JAXP的SAX方式解析XML文件

    简单用JAXP的SAX方式(事件驱动)解析XML文件: 文件(1.XML) <?xml version="1.0" encoding="UTF-8" st ...

  6. javaweb学习总结十二(JAXP对XML文档进行SAX解析)

    一:JAXP使用SAX方式解析XML文件 1:dom解析与sax解析异同点 2:sax解析特点 二:代码案例 1:xml文件 <?xml version="1.0" enco ...

  7. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  8. 2.2 使用 JAXP 对XML文档进行SAX解析

    使用JAXP 对 XML文档进行 SAX解析: public class Demo1 { /** * 使用JAXP对XML文档进行SAX解析 * @throws Exception * @throws ...

  9. DOM综合案例、SAX解析、StAX解析、DOM4J解析

    今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...

随机推荐

  1. 转:关于视频H264编解码的应用实现

    转:http://blog.csdn.net/scalerzhangjie/article/details/8273410 项目要用到视频编解码,最近半个月都在搞,说实话真是走了很多弯路,浪费了很多时 ...

  2. 一.CSS工作原理

    CSS全称层叠样式表,它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.是能够真正做到网页表现与内容分离的一种样式设计语言,能够对网页 ...

  3. RC4 加密算法asp版

    Function RC4(data, Key) ), k(), outstr, Acii, j, tst, xre1, xre2, temp, x, t, y, qwe, zxc s(i) = i - ...

  4. $_SERVER 中重要的元素

      元素/代码 描述 $_SERVER['PHP_SELF'] 返回当前执行脚本的文件名. $_SERVER['GATEWAY_INTERFACE'] 返回服务器使用的 CGI 规范的版本. $_SE ...

  5. ajax 返回数据 无法得到其属性的解决办法

    当我们用ajax无法 得到其属性.正常情况下是: <script type="text/javascript">        function useAjax(sen ...

  6. c#实现数据集合转换为csv文本

    需求 1.将一个数据集合导出到一个csv文件中,集合类型可以视为 List<T>,T为任意类型,T包含多个属性,可指定部分属性进行导出 2.软件中有多种不同类型的数据类型需要进行导出 需求 ...

  7. SQL学习备忘

    1.按照拼音首字母的正序或倒序排序 SELECT CREATOR_REALNAME FROM tableName ORDER BY NLSSORT(CREATOR_REALNAME, 'NLS_SOR ...

  8. (转)RabbitMQ消息队列(二):”Hello, World“

    本文将使用Python(pika 0.9.8)实现从Producer到Consumer传递数据”Hello, World“. 首先复习一下上篇所学:RabbitMQ实现了AMQP定义的消息队列.它实现 ...

  9. go开发环境配置

  10. opencv获取图片sift特征

    利用opencv2.3来获取图片的sift特征,并输出到标准输出,可用重定向到文件. #include<cstdio> #include"opencv2/opencv.hpp&q ...