文档章节

XML--Jaxp-sax解析

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

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
济南
Android 创建与解析XML(一)—— 概述

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

长平狐
2013/01/06
149
0
java默认XML解析器Xerces-J??

从书上看到,我按照我的想法理解了下(但是发现有点乱):java默认的XML解析器Xerces-J包含JAXP为DOM和SAX解析方式的一些接口提供了实现接口,而JAXP下的javax.xml.parsers 包则用于获取解析...

钟艾一生
2016/11/16
123
0
JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较 1.各种方式的详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的 官方W3C标准。DOM是以层次结构组织...

_xiaotudou
2014/03/28
221
0
完整理解XML领域(耗费心血,欢迎纠错)

每个人都知道什么是XML,也知道它的格式.如果深入点理解如何使用XML,可能就不是每个人都知道的了. XML是一种自描述性文档,它的作用是内容的承载,和展示没有任何关系.所以,如何将XML里的数据以...

xpbug
2013/01/24
0
11
XML解析方法详解

今日目标:DOM、 SAX、 STAX、 XML解析API 今日重点:JAXP DOM解析 、JAXP SAX解析、XML PULL解析。 XML现在已成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。深入了...

honzhang
2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea新建springCloud项目(5)- 订单服务

1.创建订单api,如下: 2.创建订单实现逻辑 3.新建订单、订单商品表 -- 订单 create table `order_master` ( `order_id` varchar(32) not null, `buyer_name` varchar(32) not null comment......

monroeCode
22分钟前
1
1
游戏开发经验谈(二):对战类全球服游戏的设计与实现

上篇文章《游戏开发经验谈(一):游戏架构里隐藏的五个坑及其应对方案》,我们主要讲解了游戏架构设计当中隐藏的一些坑及其应对方案,错过的小伙伴可以回溯之前的内容。本期内容,将会重点介...

UCloudTech
31分钟前
0
0
Mysql基本语法

一.联合主键 drop table CONTENT_AND_CATALOG;CREATE TABLE `tobebetter`.`CONTENT_AND_CATALOG` ( `ID` VARCHAR(120) NOT NULL , `CONTENT_ID` VARCHAR(120) , `CA......

我是菜鸟我骄傲
33分钟前
0
0
179. centos7 安装mariadb

1. centos7 中安装mariadb 1.1 执行安装 centos7 自带了mariadb yum -y install mariadb mariadb-server 1.2 启动mariadb systemctl start mariadb 1.3 设置开机启动 systemctl enable maria......

Lucky_Me
40分钟前
0
0
【AI实战】动手训练自己的目标检测模型(YOLO篇)

在前面的文章中,已经介绍了基于SSD使用自己的数据训练目标检测模型(见文章:手把手教你训练自己的目标检测模型),本文将基于另一个目标检测模型YOLO,介绍如何使用自己的数据进行训练。 ...

雪饼
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部