sax解析xml文件,封装到对象中
创建User.java类
public class User {
private String id;
private String name;
private String age;
private String password;
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 getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
xml文件内容
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="A001">
<name>Jack</name>
<age>25</age>
</user>
<user id="A002">
<name>张三</name>
<age>80</age>
</user>
</users>
创建XmlParseHandler.java类。集成DefaultHandler,重写部分方法
import java.util.ArrayList;
import java.util.List; import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; public class XmlParseHandler extends DefaultHandler {
private String value = null;
private List<User> userList = new ArrayList<User>();
private User user = null; @Override
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException {
super.startElement(uri, localName, qName, attributes);
if ("user".equals(qName)) {
user = new User();
String id = attributes.getValue("id");
user.setId(id);
}
} @Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
value = new String(ch, start, length);
} @Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if (qName.equals("user")) {
userList.add(user);
user = null;
} if (qName.equals("name")) {
user.setName(value);
} if (qName.equals("age")) {
user.setAge(value);
}
} public List<User> getUserList() {
return userList;
} public void setUserList(List<User> userList) {
this.userList = userList;
}
}
创建XmlParseUtils.java类
import java.util.ArrayList;
import java.util.List; import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; public class XmlParseUtils { public static List<User> getUser(String xml) throws Exception {
List<User> list=new ArrayList<User>();
// 创建SAXParserFactory实例
SAXParserFactory spf = SAXParserFactory.newInstance();
try {
// 创建SAXParser实例
SAXParser parser = spf.newSAXParser();
// 创建DefaultHandler实例
XmlParseHandler handler = new XmlParseHandler();
// 开始解析
parser.parse(xml, handler);
list=handler.getUserList();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
创建测试类
import java.util.List;
public class TestSax {
public static void main(String[] args) {
try {
List<User> list=XmlParseUtils.getUser("E:/app/users.xml");
for(User ele:list){
System.out.println("name:"+ele.getName());
System.out.println("age:"+ele.getAge());
}
} catch (Exception e) {
e.printStackTrace();
}
System.exit(0);
}
}
控制台输出结果
name:Jack
age:25
name:张三
age:80
sax解析xml文件,封装到对象中的更多相关文章
- sax解析xml文件的DefaultHandler处理类
一千年的时光,我无数次掀起岁月的帷幔,只为和你,在某一个平静如水的日子相遇,然后相识,倾情一生,缱绻一世,好美的散文,好吧,我情愿把这个“你”当作android:),使用sax解析xml文件是我见到过 ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- 用SAX解析xml文件,java
(此文为(https://www.imooc.com/video/4482)之随笔) 1.用SAX解析xml文件大致分为三步 写了一个XML文件作为例子 (1)main方法代码如下: import j ...
- SAX解析xml文件
需要做一个银行名字的列表. 因为有很多,所以想到了用xml来保存,然后uongDAX解析. public class BankSelectActivity extends BaseActivity{ ...
- cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)
今天是个好日子.我以为事情可以变得,明天是个好日子.打开门儿春风... 恩,听着歌写文档生活就是这么享受. 今天曾经的邻居大神突然在qq上赞了我一下,这让我异常激动啊.. 这还要从前前前几天说起,那会 ...
- 安卓SAX解析XML文件
XML文件经常使用的解析方式有DOM解析,SAX解析. 一.Sax SAX(simpleAPIforXML)是一种XML解析的替代方法. 相比于DOM.SAX是一种速度更快,更有效的方法. 它逐行扫描 ...
- Python—使用xml.sax解析xml文件
什么是sax? SAX是一种基于事件驱动的API. 利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器. 解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件; 而事件处 ...
- Java中实现SAX解析xml文件到MySQL数据库
大致步骤: 1.Java bean 2.DBHelper.java 3.重写DefaultHandler中的方法:MyHander.java 4.循环写数据库:SAXParserDemo.java ① ...
- 使用SAX解析XML文件
SAX这是Simple API for XML缩写,它不是由引起W3C拟议标准正式.尽管如此,使用SAX很少几个,点儿全部的XML解析器都会支持它. 与DOM比較而言,SAX是一种轻量型的方法. 我们 ...
随机推荐
- [BZOJ5073][Lydsy1710月赛]小A的咒语
bzoj description 你有一个\(A\)串和\(B\)串,你需要判断是否可以在\(A\)串中拆出\(x\)个互不相交的子串,使它们按顺序拼在一起可以组成\(B\)串. \(|A|,|B|\ ...
- 分享Win7 将svn增加系统服务并成功启动的方法
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/default7/article/details/32728717 依照网上搜索到的方法,结果一直提示 ...
- oracle 之 控制oracle RAC 进行并行运算
RAC的一大优点就是可以跨节点进行并行计算,那么如何控制并行运算?这就是这篇文章要讨论的内容. 10 g 中: 合理设置跨节点并行,需要先设置一些参数:instance_groups:这个参数主要是设 ...
- luvcview,使用mplayer查看摄像头和luvcview保存YUV图像视频的播放(转)
luvcview,使用mplayer查看摄像头和luvcview保存YUV图像视频的播放 在mplayer中查看摄像头,可使用如下命令:mplayer tv:// -tv driver=v4l2:in ...
- java.lang.NoSuchFieldError: TRACE
Exception in thread "main" java.lang.NoSuchFieldError: TRACE at org.jboss.logging.Log4j ...
- 基于Oracle的EntityFramework的WEBAPI2的实现(四)——自动生成在线帮助文档
打开我们项目中的Area文件夹,正常情况下,我们会发现已经有了一个名字叫做[HelpPage]的区域(Area),这个区域是vs帮助我们自动建立的,它是一个mvc(不是webapi),它有普通的Con ...
- EFCodeFirst使用Nuget更新数据库
在MVC开发中,习惯于使用EF作为数据库操作,相对于传统的Ado.Net的数据库操作方式,EF大大的节省了我们手写SQL语句的时间,即便是传统的使用代码生成的方式.EF操作数据库目前分为两种大的方式. ...
- Go - 类型与变量
类型 Go 语言中的类型与其他语言类似,比较特殊的有以下几个: bool 类型 - 它的值只能是 true 与 false. int / uint - 它们的长度会根据操作系统的不同(32/64 bi ...
- MVC、MVP、MVVM架构模式
MVC模式 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式就是架构模式的一种,不仅适用于 ...
- 带你剖析淘宝TDDL——Matrix层的分库分表配置与实现
前言 在开始讲解淘宝的TDDL(Taobao Distribute Data Layer)技术之前,请允许笔者先吐槽一番.首先要开喷的是淘宝的社区支持做的无比的烂,TaoCode开源社区上面,几乎从来 ...