文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

最重要的是做什么,而不是怎么做。

最重要的是做什么,而不是怎么做。 做什么是战略,怎么做是战术。将军下令说,天黑前拿下这座山头,这是战略。手下的士兵可以不知道为什么要拿下这座山头,还非得是天黑之前,但士兵必须知道...

我是菜鸟我骄傲
33分钟前
0
0
w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
今天
2
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
3
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部