前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java核心技术卷2 高级特性 学习笔记(3)

Java核心技术卷2 高级特性 学习笔记(3)

作者头像
发布2019-01-07 12:41:15
6160
发布2019-01-07 12:41:15
举报
文章被收录于专栏:WD学习记录WD学习记录

参考:《Java核心技术卷2 高级特性 》第三章

XML是一种非常有用的描述结构化信息的技术。

XML格式能够表示层次结构,这比属性文件的平面结构更加灵活。

XML格式能够表达层次结构,并且重复的元素不会被曲解。

XML文档结构一般以文档头开始:

代码语言:javascript
复制
<?xml version="1.0"?>

或者

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

文档头是可选的,但是强烈建议使用。

文档头之后通常是文档类型定义(Document Type Definition,DTD),文档类型定义时确保文档正确的一个重要机制,但是它不是必须的。

XML文档的征文包含根元素,根元素包含其他元素。

在设计XML文档结构时,最好让元素要么包含子元素,要么包含文本,避免同时有文本和子元素,即混合式内容,可以简化解析过程。

解析XML文档,Java提供了两种XML解析器:

  • 文档对象模型(Document Object Model,DOM)解析器这样的属性解析器,将读入的XML文档转换为树结构
  • XML简单API(Simple API for XML,SAX)解析器这样的流机制解析器,在读入XML文档时生成相应的事件。

DOM解析器对于实现我们的大多数目的来说更容易一些,如果要处理很长的文档,用它生成树结构会消耗大量内存,或者只是对于某些元素感兴趣,而不关心上下文,这些情况下应该考虑使用流机制解析器。

使用XPath来定位信息

使用XPath执行下列操作比普通的DOM方式要简单的多:

(1)获得文档节点

(2)枚举它的子元素

(3)定位某个元素

(4)定位其子节点中名字为xx的节点

(5)定位其子节点中的text节点

(6)获取其数据

Java类库提供的流机制解析器,老而弥坚的SAX解析器和添加到Java SE6中的更现代化的StAX解析器。SAX解析器使用的是事件回调,而StAX解析器提供了遍历解析事件的迭代器,后者用起来通常更方便一些。

SAX解析器在解析XML输入数据的各个组成部分时会报告时间,但不会以任何方式存储文档,而是由事件处理器建立相应的数据结构。实际上,DOM解析器是在SAX解析器的基础上构建的,它在接收到解析器事件时构建dom树。

StAX解析器是一种拉解析器(pull parser),与安装事件处理器不同,只需要使用基本循环来迭代所有的事件。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档