XML与如何导入dom4j解析包

二、Java XML 教程

1、Java XML 解析器

1.1、什么是XML解析?

解析XML是指将通过XML文档访问数据或修改数据的一个操作或方法。

Java库中提供了两种XML解析器: ​ 1、像文档对象模型(Document Object Model,DOM)解析器这的树型解析器(tree parse),它们将读入的XML文档转换 成树结构。 ​ 2、像XML简单API(Simple API for XML,SAX)解析器这样的流机制解析器(streaming parser),它们在读入XML文档时生 成相应的事件。

1.2、XML解析器是什么?

XML解析器提供方法来访问或修改XML文档中的数据。 Java提供了多种选择来解析XML文档。以下是各种类型解析器其通常用于解析XML文档。 ​ Dom解析器 - 解析通过加载该文件的全部内容,并创建其完整分级树中存储的文件。 ​ SAX解析器 - 解析基于事件触发器的文档。不完整(部分)的文件加载到存储器中。 ​ JDOM解析器 - 解析以类似的方式,以DOM解析器但更简单的方法的文档。 ​ StAX解析器 - 解析以类似的方式,以SAX解析器但在更高效的方式的文档。 ​ XPath解析器 - 解析基于表达式XML并广泛选择使用XSLT。 ​ DOM4J解析器 - Java库来解析XML,XPath和使用Java集合框架XSLT,为DOM,SAX和JAXP的支持。

2、Java DOM解析器

2.1、DOM解析器简介

文档对象模型是万维网联盟(W3C)的官方推荐。它定义了一个接口,使程序能够访问和更新样式,结构和XML文档的内容。支持DOM实现该接口的XML解析器。

何时使用? 在以下几种情况时,应该使用DOM解析器: 1、需要知道很多关于文档的结构 2、需要将文档的部分周围(例如,可能需要某些元素进行排序) 3、需要使用的文件中的信息超过一次

会得到什么? 当使用DOM 解析器解析一个XML文档,会得到一个树形结构,其中包含的所有文档的元素。 DOM提供了多种可用于检查文档的内容和结构的函数。

优势 DOM是用于处理文档结构的通用接口。它的一个设计目标是Java代码编写一个DOM兼容的解析器,运行在任何其他的DOM兼容的解析器不会有变化。

DOM接口 DOM定义了几个Java接口。这里是最常见的接口: 1、节点 - DOM的基本数据类型。 2、元素 - 要处理的对象绝大多数是元素。 3、Attr - 代表元素的属性。 4、文本 - 元素或Attr的实际内容。 5、文档 - 代表整个XML文档。文档对象是通常被称为DOM树。

常见的DOM方法 当正在使用DOM,有经常用到的几种方法: 1、Document.getDocumentElement() - 返回文档的根元素。 2、Node.getFirstChild() - 返回给定节点的第一个子节点。 3、Node.getLastChild() - 返回给定节点的最后一个子节点。 4、Node.getNextSibling() - 这些方法返回一个特定节点的下一个兄弟节点。 5、Node.getPreviousSibling() - 这些方法返回一个特定节点的前一个兄弟节点。 6、Node.getAttribute(attrName) - 对于给定的节点,则返回所请求的名字的属性。

2.2、Java DOM解析器 - 解析XML文档

使用DOM的步骤 以下是在使用DOM解析器解析文档使用的步骤。 1、导入XML相关的软件包。 2、创建DocumentBuilder 3、从文件或流创建一个文档 4、提取根元素 5、检查属性 6、检查子元素

document对象: 要操作XML,先就得有Document对象,把一个XML文件加载进内存的时候,在内存中形成所谓的一种树状结构,我们把这一个结构称之为DOM树.

注意: 我们在Java代码中所做的增/删/改/查操作,都仅仅是操作的是内存中的Document对象,和磁盘中的XML文件没有关系。比如:删除一个联系人信息之后,XML文件中数据依然存在,此时出现内存中的数据和磁盘文件中的数据不同步。所以,对于增删改操作,我们需要做同步操作(把内存中的数据和磁盘的XML文件数据保持一致)。 DOM:在第一次的时候就会把XML文件加载进内存,如果XML文件过大,可能会造成内存的溢出. DOM:在做增删改查操作的时候比较简单,,但是性能却不高(线性搜索).

3、Java SAX解析器

3.1、Java SAX解析器简介

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

SAX(针对XML的简单API)是基于事件为XML文档的解析器。不像DOM解析器,SAX解析器创建没有解析树。 SAX是一个流接口用于XML的,这意味着使用SAX应用接收事件通知有关XML文档被处理的元素,属性,在按顺序每次开始在文档的顶部,并与所述闭合结束根元素。 ​ 1、读取XML文件从上到下,构成一个结构完整的XML文档的标记 ​ 2、令牌以相同的顺序进行处理,它们出现在文档中 ​ 3、报告应用程序,因为它们所出现解析器遇到标记的特性 ​ 4、应用程序提供了必须的解析器注册的“事件”处理程序 ​ 5、作为标记标识,在处理程序回调方法相关信息调用

什么时候使用? 应该使用SAX解析器的时候: 1、可以在XML文档从上往下处理以线性方式 2、该文件并不深层次嵌套 3、处理一个非常大的XML文档,DOM树会占用太多的内存。典型DOM的实现使用10字节的存储器以表示XML的一个字节 4、解决的问题涉及的XML文档的一部分 5、数据是可用的,只要它是由解析器看出,这样的SAX可以很好地用于到达流的XML文档

SAX的缺点 1、它是在一个只进入处理随机访问方式XML文档 2、如果需要跟踪的数据分析器已经看到或更改项目的顺序,必须自已编写代码和数据存储

ContentHandler接口 此接口指定SAX解析器用来通知XML文档,已经看到部件应用程序的回调方法。

方法 方法描述
void startDocument() 调用在一个文件的开头。
void endDocument() 调用在一个文件的末尾。
void startElement(String uri, String localName, String qName, Attributes atts) 调用在一个元素的开头
void endElement(String uri, String localName,String qName) 调用在一个元件的末端。
void characters(char[] ch, int start, int length) 字符数据出现时调用。
void ignorableWhitespace( char[] ch, int start, int length) 当DTD是当前和忽略空白遇到时调用。
void processingInstruction(String target, String data) 当处理指令的认可时调用。
void setDocumentLocator(Locator locator)) 提供可用于识别文档中的位置的定位器。
void skippedEntity(String name) 一个尚未解决实体遇到时调用。
void startPrefixMapping(String prefix, String uri) 当一个新的命名空间的映射定义调用。
void endPrefixMapping(String prefix)

当一个命名空间定义结束其范围时调用。

属性接口 这种接口指定用于处理连接到一个元素的属性的方法。 int getLength() - 返回属性的数目。 String getQName(int index) String getValue(int index) String getVal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值