//第一种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读取两种方法的更多相关文章

  1. 使用Jquery解析xml的两种方法

    第一种方案(最稳妥): 先将String格式的xml转换为xml对象,然后再用Jquery解析xml对象 var returnDataXml = parseXML(returnData); var p ...

  2. Python实现CSV数据的读取--两种方法实现

    方法一: 方法二:

  3. 读取xml文件转成List<T>对象的两种方法(附源码)

    读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...

  4. 简介C#读取XML的两种方式

    简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...

  5. 取xml文件转成List<T>对象的两种方法

    读取xml文件转成List<T>对象的两种方法(附源码)   读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最 ...

  6. .net中创建xml文件的两种方法

    .net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...

  7. delphi 读取excel 两种方法

    http://www.cnblogs.com/ywangzi/archive/2012/09/27/2705894.html 两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打 ...

  8. python excel操作单元格复制和读取的两种方法

    操作单元格 新建一个sheet, 单元格赋值(两种方法) 单元格A1赋值为’xiaxiaoxu’ 单元格A2赋值为‘xufengchai’ 打印A1和A2单元格的值(两种方法) #coding=utf ...

  9. Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法

    Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. fs.listFiles方法,返回Loc ...

随机推荐

  1. 「CODVES 1922 」骑士共存问题(二分图的最大独立集|网络流)&dinic

    首先是题目链接  http://codevs.cn/problem/1922/ 结果发现题目没图(心情复杂 然后去网上扒了一张图 大概就是这样了. 如果把每个点和它可以攻击的点连一条边,那问题就变成了 ...

  2. 在微信小程序中学习flex布局

    网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就 ...

  3. 028hibernate缓存(性能优化策略)

    一级缓存 二级缓存 查询缓存 缓存是为了提高性能 变化不是很大,相对静态的对象放入缓存 对象的创建比较耗时

  4. C语言之函数

    函数:为了完成某一项功能而编写的代码的集合. C语言中的函数可以分为内置和自定函数. 内置函数:C语言中已经定义过的函数,不需要 声明,可以直接调用. 常见的内置函数: 函数名 类库 说明 doubl ...

  5. Python抓取成都房价信息

    Python里scrapy爬虫 scrapy爬虫,正好最近成都房价涨的厉害,于是想着去网上抓抓成都最近的房价情况,顺便了解一下,毕竟咱是成都人,得看看这成都的房子我以后买的起不~ 话不多说,进入正题: ...

  6. OC对象之旅 weak弱引用实现分析

    Runtime学习 -- weak应用源码学习   Runtime源码分析,带你了解OC实现过程.其中参考了大量的大神的代码以及文献,里面也有个人的见解,欢迎拍砖,欢迎交流. 两种常见使用场景 /// ...

  7. 关于sqlmap的一些命令

    Options(选项):--version 显示程序的版本号并退出-h, --help 显示此帮助消息并退出-v VERBOSE 详细级别:0-6(默认为1)Target(目标):以下至少需要设置其中 ...

  8. MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

    本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...

  9. asp.net core 教程(六)-中间件

    Asp.Net Core-中间件 在这一章,我们将了解如何设置中间件.中间件技术在 ASP.NET Core中控制我们的应用程序如何响应 HTTP 请求.它还可以控制应用程序的异常错误,这是一个在如何 ...

  10. angular2/angular4 如何通过$http的post方法请求下载二进制的Excel文件

    时间有限,废话就不多说了,直接上干货! 下面给大家介绍一下我遇到的一个坑,如果你也遇到了,那恭喜你,你一定能找到答案:angular2/angular4 如何通过$http的post方法请求下载二进制 ...