您觉得自己懂 Java 编程?事实是,大多数开发人员都只领会到了 Java 平台的皮毛,所学也只够应付工作。有些Java工具无法分类,只能算作 “有用的东西”。这是developerworks5件事系列中介绍一些您乐于拥有的工具,即使您将它们放到厨房抽屉里。

编者按:本文为 Neward & Associates 的主管Ted Neward 撰写的5件你不知道的事情系列的最后一篇(至少目前是这样)。Ted Neward 在Neward & Associates负责有关 Java、.NET、XML 服务和其他平台的咨询、指导、培训和推介。他现在居住在华盛顿州西雅图附近。以下为本文的译文:

1. StAX

在千禧年左右,当 XML 第一次出现在很多 Java 开发人员面前时,有两种基本的解析 XML 文件的方法。SAX 解析器实际是由程序员对事件调用一系列回调方法的大型状态机。DOM 解析器将整个 XML 文档加入内存,并切割成离散的对象,它们连接在一起形成一个树。该树描述了文档的整个 XML Infoset 表示法。这两个解析器都有缺点:SAX 太低级,无法使用,DOM 代价太大,尤其对于大的 XML 文件 — 整个树成了一个庞然大物。幸运的是,Java 开发人员找到第三种方法来解析 XML 文件,通过对文档建模成 “节点”,它们可以从文档流中一次取出一个,检查,然后处理或丢弃。这些 “节点” 的 “流” 提供了 SAX 和 DOM 的中间地带,名为 “Streaming API for XML”,或者叫做StAX。(此缩写用于区分新的 API 与原来的 SAX 解析器,它与此同名。)StAX 解析器后来包装到了 JDK 中,在 javax.xml.stream 包。

使用 StAX 相当简单:实例化 XMLEventReader,将它指向一个格式良好的 XML 文件,然后一次 “拉出” 一个节点(通常用 while 循环),查看。例如,在清单 1 中,列举出了 Ant 构造脚本中的所有目标:

清单 1. 只是让 StAX 指向目标

import java.io.*;

import javax.xml.namespace.QName;

import javax.xml.stream.*;

import javax.xml.stream.events.*;

import javax.xml.stream.util.*;

public class Targets  {

public static void main(String[] args) throws Exception

{

for (String arg : args)  {

XMLEventReader xsr =XMLInputFactory.newInstance().createXMLEventReader(new FileReader(arg));

while (xsr.hasNext())

{

XMLEvent evt = xsr.nextEvent();

switch (evt.getEventType())

{

case XMLEvent.START_ELEMENT:

{

StartElement se = evt.asStartElement();

if (se.getName().getLocalPart().equals("target"))

{

Attribute targetName = se.getAttributeByName(new QName("name")); // Found a target!

System.out.println(targetName.getValue());

}

break;

}                      // Ignore everything else

}

}

}

}

}

StAX 解析器不会替换所有的 SAX 和 DOM 代码。但肯定会让某些任务容易些。尤其对完成不需要知道 XML 文档整个树结构的任务相当方便。

请注意,如果事件对象级别太高,无法使用,StAX 也有一个低级 API 在 XMLStreamReader 中。尽管也许没有阅读器有用,StAX 还有一个 XMLEventWriter,同样,还有一个 XMLStreamWriter 类用于 XML 输出。

stax java_java StAX很多java人员不知道的小工具相关推荐

  1. IDEA你可能不知道的小工具

    IDEA自带的小功能 REST Client Test 作为后端开发应该都知道postman,作为接口测试工具,但是要单独打开一个软件或者网页.这边idea就自带了restful接口测试工具: Too ...

  2. php h5支付没有返回app中,很多人都不知道的监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法...

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...

  3. 英雄联盟怎么解除小窗口_英雄联盟:老玩家都不知道的小技巧,一定要注意这些细节|英雄联盟|召唤师|防御塔|新英雄|亚索...

    英雄联盟:老玩家都不知道的小技巧,一定要注意这些细节 英雄联盟作为当下最火爆的游戏之一,已经陪伴大家走过了无数的春夏秋冬,如今英雄联盟已经迎来了越来越多的新英雄,随着英雄联盟里面的英雄不断的增多,越来 ...

  4. C语言你不得不知道的小知识

    C语言你不得不知道的小知识: 1: 常见的变量修饰关键字:static.const.extern.volatile.register static:(该变量保存在全局静态区)  a.修饰局部变量--& ...

  5. java web 项目 常用 小工具类 ~~~~

    java web 项目 常用 小工具类 ~~~~ 一 .DateUtil  日期工具类 package com.devframe.common.util;import java.text.Simple ...

  6. java写测试小工具,java试题自我测试小工具

    java试题自我测试小工具 北京石油化工学院 数理系 科 072 071616 刘红育 1 Java 语言综合设计实验报告 --GUI 编程设计题目: Java 试题自我测试小工具 班级: 学号: 姓 ...

  7. 有哪些老鸟程序员知道而新手不知道的小技巧?自我感受

    最近在朋友圈看到别人分享的一篇知乎回答:https://www.zhihu.com/question/36426051/answer/76031743 我觉得写得挺有道理的,作为一个写了10多年C#代 ...

  8. 那些你可能不知道的 PDF 工具

    从网上下载了PDF文件,想转换为文字或者图片怎么办,这里分享些常用的PDF制作工具. smallpdf 功能一应俱全.简单好用的线上 PDF 工具 https://smallpdf.com/cn/ p ...

  9. 一些你我所不知道的小知识

    一.老师没教的事 a.人类全身上下,最强韧有力的肌肉,竟是舌头. b.张开眼睛打喷嚏是不可能的. c.憋气自杀也是不可能成功的. d.每一次你舔一张邮票的背胶,你就吸收了十分之一卡路里. e.右撇子平 ...

最新文章

  1. 单目图像深度估计 - 泛化篇:S2R-DepthNet
  2. 2021湖北孝感高考成绩查询时间,2021年4月孝感自考成绩查询时间网址入口
  3. nrf51822蓝牙芯片ble_app_proximity程序总结
  4. fast.ai 深度学习笔记:第一部分第一课
  5. c语言提取七位数讲解,C语言-体育彩票7位数,感受身中500万的fell
  6. 安工大计算机学院肖维民,安工大路由器实验报告.docx
  7. c#2.0语法新关键字 partial
  8. uva10668二分解方程
  9. PHP 公众号文章 转 pdf,使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)...
  10. windows10同步时间出错,终于找到解决办法了!
  11. 配置PLSQL连接ORACLE数据库
  12. TCP网络错误Connection reset by peer,peer是啥意思呢
  13. 取redis中手机验证码,并验证是否正确
  14. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  15. 数据类型之列表与元组
  16. Apache官网下载ant软件包及安装详解
  17. XYQ加密算法——动态可逆加密算法。
  18. axios 获取本地json文件
  19. 【Linux】解压缩文件(一)
  20. Python3中关于下划线变量和命名的总结

热门文章

  1. ZOJ3734 LIKE vs CANDLE
  2. HandBrake for Mac 1.4.2多功能视频编码器
  3. 一起了解Windows——win10开启服务器管理器的图文操作步骤
  4. 游戏本连oracle,新平台游戏本接连到来,怎么选择合适的硬件配置?
  5. 操作系统linux应用试卷,《Linux操作系统应用》试卷5
  6. 【对讲机的那点事】对讲机耳机的种类你了解吗?
  7. 买菜总结之一--蔬菜篇
  8. OGC标准地图服务介绍
  9. 一个让京东 CTO 都参与其中的敏捷转型故事
  10. 里奥老师乾坤大挪移—深入浅出走迷宫问题之BFS算法1