SAX解析文件
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
/**
* 1.新建一个SAX解析工厂实例
* 2.new一个解析器
* 3.new一个解析处理器
* 4.解析文件
* 5.获取信息
* @author Administrator
*
*/
public class SAXParserDemo { public static void main(String[] args) {
SAXParserFactory factory = SAXParserFactory.newInstance();// 工厂模式,单例模式
try {
/* 获得一个sax解析器 */
SAXParser parser = factory.newSAXParser();
/* 解析器解析这个文件,new一个解析处理器 */
SAXParserHandler sax = new SAXParserHandler();
parser.parse("books.xml", sax);
System.out.println("几本书:" + sax.booklist.size()); for (Book book : sax.booklist) {
System.out.println(book.getId());
System.out.println(book.getName());
System.out.println(book.getPrice());
System.out.println(book.getAuthor()); } } catch (ParserConfigurationException e) { e.printStackTrace();
} catch (Exception e) { e.printStackTrace();
}
} }
package SAXParser1; import java.util.ArrayList; import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; /**
* @author xuhua 解析处理器
* 1.重写方法
*/
public class SAXParserHandler extends DefaultHandler {
/* 全局变量 */
Book book;
String value;
ArrayList<Book> booklist = new ArrayList<Book>(); /**
* 解析开始
*/
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("parse start");
} /**
* 解析结束
*/
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("parse end");
} /**
* 开始解析标签
* qName:标签名字 Attributes:属性
*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); if (qName.equals("book")) {
book = new Book();
String id = attributes.getValue("id");//获取id属性值
System.out.println(id); /* 获取属性名与属性值 */
int num = attributes.getLength(); // 属性个数
for (int i = 0; i < num; i++) {
System.out.println("属性名:" + attributes.getQName(i));
System.out.println("属性值:" + attributes.getValue(i));
/* 把id属性值set进book实体中 */
if (attributes.getQName(i).equals("id")) {
book.setId(attributes.getValue(i));
}
}
} System.out.println("属性名:" + qName);
} /**
* 结束标签解析
*/
@Override
public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName);
if (qName.equals("book")) {
booklist.add(book);
book = null;
System.out.println("==============结束遍历某一本书的内容=============");
}
/* id为book节点的属性,其他为节点值 */
// else if(qName.equals("id"))
// {
// book.setId(value);
// }
else if (qName.equals("name")) {
book.setName(value);
} else if (qName.equals("price")) {
book.setPrice(value);
} else if (qName.equals("author")) {
book.setAuthor(value);
}
System.out.println(qName + "元素结束"); } /**
* 获取节点值
*/
@Override
public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length);
/**/
value = new String(ch, start, length);
// if(value.trim()!=null)
if (!value.trim().equals("")) // 标签之间存在空格
System.out.println(value);
} }
解析处理器
package SAXParser1;
public class Book {
private String id;
private String name;
private String price;
private String author;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
book实体javabean
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book id="1">
<name>java入门</name>
<price>80</price>
<author>张思</author>
</book>
<book id="2">
<name>java进阶</name>
<price>90</price>
<author>叶东</author>
</book> </bookstore>
xml文件
SAX解析文件的更多相关文章
- dom4j解析器 基于dom4j的xpath技术 简单工厂设计模式 分层结构设计思想 SAX解析器 DOM编程
*1 dom4j解析器 1)CRUD的含义:CreateReadUpdateDelete增删查改 2)XML解析器有二类,分别是DOM和SAX(simple Api for xml). ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- SAX解析xml文件
需要做一个银行名字的列表. 因为有很多,所以想到了用xml来保存,然后uongDAX解析. public class BankSelectActivity extends BaseActivity{ ...
- XML文件解析DOM解析和SAX解析
解析一个XML文档有哪些内容解析有:dom和sax两种dom:把整个XML文档放入内存,适合XML随机访问,占用内存资源大sax:事件驱动型的XML解析方式,顺序读取,不用一次装载整个文件,遇到标签会 ...
- android sax解析xml 文件 动态加载标题
要解决一个问题 : 问题描述为 把标题动态的加载到 listView子布局中 我们首先通过 java程序写一个把标题写到xml文件的程序.这个程序会在以后讲解. 现在截图 已经写好的xm文件格式如下 ...
- cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)
今天是个好日子.我以为事情可以变得,明天是个好日子.打开门儿春风... 恩,听着歌写文档生活就是这么享受. 今天曾经的邻居大神突然在qq上赞了我一下,这让我异常激动啊.. 这还要从前前前几天说起,那会 ...
- 使用SAX解析XML文件
SAX这是Simple API for XML缩写,它不是由引起W3C拟议标准正式.尽管如此,使用SAX很少几个,点儿全部的XML解析器都会支持它. 与DOM比較而言,SAX是一种轻量型的方法. 我们 ...
- 用SAX解析xml文件,java
(此文为(https://www.imooc.com/video/4482)之随笔) 1.用SAX解析xml文件大致分为三步 写了一个XML文件作为例子 (1)main方法代码如下: import j ...
- 【文件处理】xml 文件 SAX解析
SAX的全称是Simple APIs for XML,也即XML简单应用程序接口. 与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式. 当使用SAX分析器对XML文档 ...
随机推荐
- 使用beanstalkd实现定制化持续集成过程中pipeline
持续集成是一种项目管理和流程模型,依赖于团队中各个角色的配合.各个角色的意识和配合不是一朝一夕能练就的,我们的工作只是提供一种方案和能力,这就是持续集成能力的服务化.而在做持续集成能力服务化的过程中, ...
- 自动化双向数据绑定AngularJs---入门
前 言 AngularJS,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为 ...
- 小白学Maven第一篇配置
在百度上搜Maven进入官网,然后在进Download里面把apache-maven-3.5.0-bin.zip(记得不要下错)下载下来 然后进行安装 (前提你配置了Java如下图) Java配置: ...
- plsql部分字段中文乱码,sqlplus中文乱码
PLSQL中文乱码 问题: 解决: 思路1:设置 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" 结果:并不能解决问题! ...
- 【转载】CSS3 Transitions, Transforms和Animation使用简介与应用展示
文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/wordpress/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=1 ...
- Fiddler使用总结(一)
与后端数据通信是前端日常开发的重要一环,在与后端接口联调的时候往往需要通过查看后端返回的数据进行调试.如果在PC端,Chrome自带的DevTools就已经足够用了,Network面板可以记录所有网络 ...
- CentOS(linux发行版)系统安装中文输入法:
安装步骤: 1>.打开终端界面,使用su - root切换到超级用户,然后输入yum install"@Chinese support",回车. 2>.中间安装过程提示 ...
- await和async更多的理解
最近有不少网友提起await和async,呵呵,C# 5引进的语法糖. 这个语法糖还真不好吃,能绕倒一堆初学的朋友,在网上也有很多网友关于这块知识点的争论,有对有错,今天在这里把这个误区好好讲讲. 在 ...
- 2017年11月Dyn365/CRM用户社区活动报名
UG是全球最大Dynamics的用户组织,由最终用户自发组织,由行业有经验的专家自愿贡献知识和经验的非营利机构,与会人员本着务实中立的态度,不进行推介产品,服务以及其他营销行为.在美国,微软Dynam ...
- MongoDB查询分析
MongoDB 查询分析可以确保我们建立的索引是否有效,是查询语句性能分析的重要工具.MongoDB 查询分析常用函数有:explain() 和 hint(). 1. explain(): 提供查询信 ...