XML读取两种方法
//第一种SAX方法解析 package a20170722.xmlex; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class parseUserInfoSAX { public static void main(String[] args) throws Exception { File file=new File("src/a20170722/xmlex/UserInfoxml.xml"); SAX(file); } //SAX解析 public static void SAX(File file) throws Exception{ //创建解析工厂 SAXParserFactory sax=SAXParserFactory.newInstance(); //创建解析对象 SAXParser saxParser = sax.newSAXParser(); //创建自定义解析 MyHeader mh=new MyHeader(); saxParser.parse(file,mh); for (User userlist:mh.userList) { System.out.println(userlist); } } } class MyHeader extends DefaultHandler{ List<User> userList=new ArrayList<User>(); static String name; static String age; static String address; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equals("user")){ name=attributes.getValue("name"); age=attributes.getValue("age"); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { String str=new String(ch,start,length); str=str.trim(); address=str; if((name!=null)){ if((address.length()>1)){ userList.add(new User(name,age,address)); } } } } class User{ String name; String age; String address; public User(String name, String age, String address) { super(); this.name = name; this.age = age; this.address = address; } @Override public String toString() { return "[name]="+name+"[age]="+age+"[address]="+address; } } //第二种DOM方法解析 package a20170722.xmlex; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class parseUserInfoDom { public static void main(String[] args) throws Exception { File file=new File("src/a20170722/xmlex/UserInfoxml.xml"); dom(file); } public static void dom(File file) throws Exception{ List<UserInfo> userList=new ArrayList<UserInfo>(); //创建dom解析工厂 DocumentBuilderFactory DBFactory=DocumentBuilderFactory.newInstance(); //创建解析对象 DocumentBuilder DBuilder = DBFactory.newDocumentBuilder(); Document Dt = DBuilder.parse(file); NodeList TagName = Dt.getElementsByTagName("user"); for (int i = 0; i < TagName.getLength(); i++) { Node node = TagName.item(i); Element ele=(Element) node; String name=ele.getAttribute("name"); String address=ele.getTextContent(); if(Integer.parseInt(ele.getAttribute("age"))>18){ userList.add(new UserInfo(name,ele.getAttribute("age"),address.trim())); } } for (UserInfo list:userList) { System.out.println(list); } } } class UserInfo{ String name; String age; String address; public UserInfo(String name, String age, String address) { super(); this.name = name; this.age = age; this.address = address; } @Override public String toString() { return "[name]="+name+"[age]="+age+"[address]="+address; } }
XML读取两种方法的更多相关文章
- 使用Jquery解析xml的两种方法
第一种方案(最稳妥): 先将String格式的xml转换为xml对象,然后再用Jquery解析xml对象 var returnDataXml = parseXML(returnData); var p ...
- Python实现CSV数据的读取--两种方法实现
方法一: 方法二:
- 读取xml文件转成List<T>对象的两种方法(附源码)
读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...
- 简介C#读取XML的两种方式
简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...
- 取xml文件转成List<T>对象的两种方法
读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最 ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- delphi 读取excel 两种方法
http://www.cnblogs.com/ywangzi/archive/2012/09/27/2705894.html 两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打 ...
- python excel操作单元格复制和读取的两种方法
操作单元格 新建一个sheet, 单元格赋值(两种方法) 单元格A1赋值为’xiaxiaoxu’ 单元格A2赋值为‘xufengchai’ 打印A1和A2单元格的值(两种方法) #coding=utf ...
- Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法
Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. fs.listFiles方法,返回Loc ...
随机推荐
- VS2010 使用 EF5 框架步骤
1.安装 nuget , 在nuget里联机查找 EF 5.x DbContext Generator for C# 模版下载安装 2.nuget 控制台执行 Install-Package Enti ...
- Hibernate参数绑定的五种方式
Hibernate参数绑定 参数绑定优点: (1)安全性 防止用户恶意输入条件和恶意调用存储过程 (2)提高性能 底层采用JDBC的PreparedStatement预定义sql功能,后期查询直接从缓 ...
- 销量预测和用户行为的分析--基于ERP的交易数据
写在前面: 这段时间一直都在看一些机器学习方面的内容,其中又花了不少时间在推荐系统这块,然后自己做了一套简单的推荐系统,但是跑下来的结果总觉得有些差强人意,我在离线实验中得到Precision,Rec ...
- 200 OK (from cache)原因
Meta标签中的http-equiv用来标记不可缓存或过期时间,但效果一般.而且代理缓存基本不访问HTML文档内容,所以尽量少用meta标签控制缓存. Pragma: no-cache Forces ...
- mongo - 升级步骤
升级步骤1. 关闭balancer登陆mongos,执行sh.stopBalancer(),或者 连接到mongos>use config>db.settings.update( { _i ...
- PF2.1版本总结,在设计过程中遇到的问题以及技术分享
在距离上一次的版本发布已经过去4个月的时间,因为个人的能力以及时间有限,所以这次的版本会推迟这么久.可是无论怎样,PF2.1带着自身的完善总算不负所望推出.在这次的版本调整中让我深有体会到了程序设计中 ...
- 01 json环境搭建
1 导包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o ...
- Python教程(2.3)——运算符和类型转换
Python里有很多运算符(operator),这节就让我们来详细学一学. 注意:本文没有特别说明的地方,只考虑bool.int.float三种类型.例如"两边操作数类型相同时,得到的结果为 ...
- node.js 开发环境配置 和使用方式
1.在根目录创建一个文件夹 里面 放入js 编写完成后使用 cmd 进行编译就可以了2.expree 安装 卸载: npm uninstall -g express 安装指定版本: npm i ...
- 基于Python + requests 的web接口自动化测试框架
之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用python实现,将代码和用例分离,易于维护. 项目背景 公司的软件采用B/S架构,进行数据存储.分析.管理 工具选择 pytho ...