文档章节

XML--Jaxp-sax解析

H
 HoneyHoney
发布于 2015/06/13 13:32
字数 301
阅读 20
收藏 0

精选30+云产品,助力企业轻松上云!>>>

sax特点:1:只读

               2:仅向前,读完就删除内存中的数据

               3:占内存小

1:读取所有有用的数据

 @Test
 public void test1() throws Exception {
  // 创建解析器
  SAXParser sax = SAXParserFactory.newInstance().newSAXParser();
  // 2:解析xml文件
  sax.parse(new File("./file/users.xml"), new DefaultHandler() {
   private String qName = null;
 
   @Override
   public void startElement(String uri, String localName,String qName, Attributes attr) throws SAXException {
    if (qName.equals("user")) {
     // 获取id
     String id = attr.getValue("id");
     System.err.println(id);
    } else if (qName.equals("name") || qName.equals("age")) {
     this.qName = qName;
    }
   }
 
   @Override
   // uri命名空间,qName全限定名称
   public void endElement(String uri, String localName, String qName)
     throws SAXException {
    if (qName.equals("name") || qName.equals("age")) {
     this.qName = null;
    }
   }
 
   @Override
   public void characters(char[] ch, int start, int length)  throws SAXException {
    if (qName != null) {
     String val = new String(ch, start, length);
     System.err.println(val);
    }
   }
  });
 }

2.读取所有有用的数据封装到list<bea>

@Test
 public void query() throws Exception {
  final List<User> 
list = new ArrayList<User>();
  SAXParser sax = SAXParserFactory.newInstance().newSAXParser();
  sax.parse(new File("./file/users.xml"), new DefaultHandler() {
   User u = null;
   private String qName;
 
   @Override
   public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    if (qName.equals("user")) {
     u = new User();
     u.setId(attributes.getValue("id"));
    } else if (qName.equals("name") || qName.equals("age")) {
     this.qName = qName;
    }
   }
 
   @Override
   public void characters(char[] ch, int start, int length) throws SAXException {
    if (qName != null) {
     String val = new String(ch, start, length);
     if (qName.equals("name")) {
      u.setName(val);
     } else {
      u.setAge(Integer.valueOf(val));
     }
    }
   }
 
   @Override
   public void endElement(String uri, String localName, String qName) throws SAXException {
    if (qName.equals("name") || qName.equals("age")) {
     this.qName =null;
    }else if(qName.equals("user")){
     list.add(u);
    }
   }
  });
  System.err.println("封装的结果是:"+list);
 }


H
粉丝 0
博文 21
码字总数 6313
作品 0
济南
私信 提问
加载中
请先登录后再评论。
Sun 的 Java 和 XML API:孰功孰过?

作者:Brett D. McLaughlin, Sr. ([email]brett@newInstance.com[/email]), 作家兼编辑, O'Reilly Media, Inc. Brett McLaughlin 从 Logo 时代就开始使用计算机。(还记得那个小三角吗?)近......

cping
2008/12/16
0
0
DOM SAX JAXP DOM4J JDOM xerces解析器

DOM与SAX 用于读取和操作 XML 文件的标准是文档对象模型(Document Object Model,DOM)。遗憾的是,DOM 方法涉及读取整个文件并将该文件存储在一个树结构中,而这样可能是低效的、缓慢的,并...

HelloRookie
2018/09/13
0
0
Java XML && SAX && StAX && JAXP

XmlPull project XmlPull project is dedicated(专用) to be a site for for general Pull parsing promotion(提升)/education (including StAX) and in particular to contain easy-to-......

秋风醉了
2014/07/01
619
0
Android 创建与解析XML(一)—— 概述

Android 是最常用的智能手机平台,XML 是数据交换的标准媒介,Android 中可以使用标准的XML生成器、解析器、转换器 API,对 XML 进行解析和转换。 XML,相关有DOM、SAX、JDOM、DOM4J、Xerce...

长平狐
2013/01/06
204
0
源码详解系列(三) ------ dom4j的使用和分析(重点对比和DOM、SAX的区别)

简介 dom4j 采用 DOM 方式解析 xml,可以读写 xml 文件,并且支持 Xpath 来获取节点。目前,由于其出色的性能和易用性,目前 dom4j 已经得到广泛使用,例如 Spring、 Hibernate 就是使用 do...

osc_nqztydej
04/16
5
0

没有更多内容

加载失败,请刷新页面

加载更多

Python 二十三大实践、编码建议和技巧

点击上方“测试开发技术”,选择设为“设为星标” 优质文章,第一时间送达! 近期推文: 2019年下,测试开发技术精选合集 软件测试工程师必备:如何做好接口测试? 阅读全文大概需要 10分钟。...

狂师
02/12
16
0
大佬评清华Jittor,这是怎样一个深度学习框架?

点击上方“机器学习与生成对抗网络”,关注"星标" 获取有趣、好玩的前沿干货! 如何评价清华大学发布的自研深度学习框架-计图(Jittor)? 2020年3月20日,清华自研的深度学习框架,正式对外开...

AI_bryant8
03/21
15
0
MySQL 中 ACID 底层内部实现原理详解

“ ACID 事务底层内部实现原理” Hello,大家好。我是公众号“ 八点半技术站 ”的小编-Bruce.D。 今天是周二(2020-03-24),还是那句俗语 “一日之计在于晨” ,因此分享给大家的是 「mysql...

八点半的Bruce丶D
03/24
13
0
利用Makisu构建容器镜像

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 本系列文章深入研究了容器镜像构建的最新技术。我们已经介绍了Podman和Buildah、I...

osc_8exjk9uk
16分钟前
13
0
业务代码耗时操作优化

前几天我把我们小程序登录接口性能优化了,优化之前登录接口响应时间大概是 300 ms 左右,优化后的响应时间大概在 70 ms 左右。我们小程序登录接口涉及到的业务操作除了基本的登录验证功能外...

python6666
2019/11/17
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部