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 ...
随机推荐
- liunx命令2
查看系统和bios硬件时间 [root@localhost ~]# date '+%y- %m- %d %H:%M' 17- 05- 15 02:57[root@localhost ~]# date ...
- Day5模块-random模块
random:随机数 >>> import random>>> print(random.random()) #生成随机小数0.6906362176182085 & ...
- Promise简介
Promise是ES6中的函数,规范了如何处理异步任务的回调函数,功能类似于jQuery的defferred.简单说就是通过promise对象的不同状态调用不同的回调函数.目前IE8及以下不支持,其他 ...
- swift 取消UIButton选中高亮状态
objc可以用通过重写setHighlighted方法来达到当按钮选中时的高亮状态 -(void)setHighlighted:(BOOL)highlighted{ } swift中取消高亮状态 ov ...
- 如何选择版本控制系统之二---Git的研发应用场
之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有兴趣的 ...
- C#打开php链接传参然后接收返回值
php代码 一.php <?php header("Content-Type:text/html;charset=UTF-8"); $u=$_POST['zdupdate'] ...
- slideToggle+slideup实现手机端折叠菜单效果
折叠菜单的效果,网上有很多的插件,比如bootstrap的 Collapse ,很好用也很简单,但是如果你使用的不是bootstrap框架,就会造成很多不必要的麻烦,比如默认样式被修改,代码冗余等等, ...
- Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
最近入手一台GTX 1070的笔记本,手痒想在win10上试下GPU跑模型,所以就有了接下来的安装GPU版mxnet的坎坷历程,经过多重试验终于搞定了python和R安装mxnet,现将主要点记录如下 ...
- AbstractHandlerMapping解读
一.AbstractHandlerMapping简介 AbstractHandlerMapping是HandlerMapping的抽象实现,所有的HandlerMapping都继承自AbstractH ...
- MySql俩种分页区别(注意)
注意俩个分页的区别哦~ SELECT * FROM city LIMIT 2 OFFSET 1; 从第二条记录开始 取二条记录 如下: SELECT * FROM city LIMIT 3,2; 从第 ...