sax解析案例(javabean封装xml文档数据)
package itcast.sax; import java.io.IOException;
import java.util.List; 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 { @SuppressWarnings("unchecked")
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、设置内容处理器
BeanListHandler handler = new BeanListHandler();
reader.setContentHandler(handler); //5、读取xml文档内容
reader.parse("src/book.xml"); List<Book> list = handler.getList();
System.out.println(list);
} }
package itcast.sax; import java.util.ArrayList;
import java.util.List; import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; //把xml文档中的每一本封装到一个book对象,并把多个book对象放在一个list集合中
public class BeanListHandler extends DefaultHandler { private List list = new ArrayList();
private String currentTag;
private Book book; @Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if("bookname".equals(currentTag)){
String bookname = new String(ch,start,length);
book.setName(bookname);
}
if("editor".equals(currentTag)){
String author = new String(ch,start,length);
book.setAuthor(author);
}
if("price".equals(currentTag)){
String price = new String(ch,start,length);
book.setPrice(price);
}
} @Override
public void endElement(String uri, String localName, String name)
throws SAXException {
if(name.equals("书")){
list.add(book);
book=null;
}
currentTag = null;
} @Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException { currentTag=name;
if("书".equals(currentTag)){
book = new Book();
} } public List getList() {
return list;
} }
<?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解析案例(javabean封装xml文档数据)的更多相关文章
- DOM和SAX是应用中操纵XML文档的差别
查看原文:http://www.ibloger.net/article/205.html DOM和SAX是应用中操纵XML文档的两种主要API.它们分别解释例如以下: DOM.即Do ...
- XPath提取xml文档数据
package itcast.dom4j; import java.io.File; import org.dom4j.Document; import org.dom4j.DocumentExcep ...
- Xml文档数据提取到Excel表中
近期,财务一位同事,吐槽:<某XX开票软件>导出数据文档只有Xml格式,竟然没有Excel文档,工作起来非常不方便,希望我想想办法.上图: 需求分析:Xml数据----> 提取到Da ...
- JavaEE实战——XML文档DOM、SAX、STAX解析方式详解
原 JavaEE实战--XML文档DOM.SAX.STAX解析方式详解 2016年06月22日 23:10:35 李春春_ 阅读数:3445 标签: DOMSAXSTAXJAXPXML Pull 更多 ...
- Android XML文档解析(一)——SAX解析
---------------------------------------------------------------------------------------------------- ...
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- IOS 解析XML文档
前段时间想找点事做,就是试着看能不能用豆瓣的API做点什么,于是就碰到了这个问题——XML解析. 老师还没讲,只能自己去查. XML文档解析主要有SAX和DOM两种模式,IOS上两种模式都可以用,这里 ...
- iOS网络编程笔记——XML文档解析
今天利用多余时间研究了一下XML文档解析,虽然现在移动端使用的数据格式基本为JSON格式,但是XML格式毕竟多年来一直在各种计算机语言之间使用,是一种老牌的经典的灵活的数据交换格式.所以我认为还是很有 ...
- 四种生成和解析XML文档的方法详解
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
随机推荐
- VS2013单元测试及代码覆盖率分析--Xunit
1,Javaweb中有jmeter.jacoco.ant.badboy等集成测试代码覆盖率的方式,C#代码的覆盖率怎么测试呢?VS2013的IDE上本身并未集成测试的工具,以下讲解VS2013中C#代 ...
- PHP 传值和传引用、传地址的区别
传值, 是把实参的值赋值给行参 那么对行参的修改,不会影响实参的值 传地址 是传值的一种特殊方式,只是他传递的是地址,不是普通的如int 那么传地址以后,实参和行参都指向同一个对象 ...
- http://blog.csdn.net/iamshaofa/article/details/7877785/
http://blog.csdn.net/iamshaofa/article/details/7877785/
- WordPress用户注册无法发送密码邮件怎么回事?
wordpress无法发送电子邮件.可能原因:您的主机禁用了 mail() 函数 等等几句话.在网上一搜,很快找到了解决方案:使用wp-mail-smtp插件. 一.插件下载安装.可以在wordpre ...
- 给Nginx配置一个自签名的SSL证书
转自廖雪峰的官方网站http://www.liaoxuefeng.com/ 要保证Web浏览器到服务器的安全连接,HTTPS几乎是唯一选择.HTTPS其实就是HTTP over SSL,也就是让HTT ...
- BZOJ3514 : Codechef MARCH14 GERALD07加强版
以边编号为权值 用Link-cut Tree维护最大生成树 对于新加的第i条边(u,v) a[i]表示当a[i]这条边加入后连通块个数会减少 若u==v则a[i]=m 若u与v不连通则连上,a[i]= ...
- gulp完全开发指南 => 快来换掉你的Grunt吧
最近一直在构建Angular应用,通过bower管理前端包依赖,然后通过gulp和它配合.发现gulp相比于grunt真的很轻,现在我的项目中已经取代了grunt.这里把我的一些实践贴记录下来和大家分 ...
- HDU 2818 (矢量并查集)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2818 题目大意:每次指定一块砖头,移动砖头所在堆到另一堆.查询指定砖头下面有几块砖头. 解题思路: ...
- 20145308刘昊阳 《Java程序设计》实验五报告
20145308刘昊阳 <Java程序设计>实验五 Java网络编程及安全 实验报告 实验名称 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: ...
- There was an internal API error.
1.一开始以为是用了 iOS8的API, 抱着不相信的态度,我搜到了一条原因,可能是没有选择对开发者账号或需要 cmd+shift+k 来 clean 一下,无效. 2.又继续盯着这个问题,才发现我的 ...