如何利用Java语言进行XML编程

2016-05-14 02:40刘宁
数字技术与应用 2016年8期

刘宁

摘要:XML文件是一种日趋流行的可扩展标记语言,目前在进行应用程序布署或项目配置,以及数据交换等方面具有重要意义的一种文件格式,具备强大的通用性。本文首先对XML文件进行简单介绍,然后分析了XML文件的格式,对当前流行的几种使用Java语言对XML文件的访问方式进行了说明,并着重介绍使用JDOM以及使用JDOM对XML文件的进行读写访问,示例简单,以方便读者掌握。

关键词:Java XML JDOM

中图分类号:TP31 文献标识码:A 文章编号:1007-9416(2016)08-0243-01

1 XML简介

1998年2月,W3C组织发布了XML1.0规范,目的是用来简化在Internet中的文档信息传输,XML全称Extensible Markup Language—可扩展的标记语言。自诞生之初,便因为其语法简单、描述直接、搜索准确、易于传输等特点,很快便成为数据交换的公共语言。

XML文件是纯文本文件,可以使用各类文本编辑器进行创建或编辑。XML文档总体上包含两个部分,序言(Prolog)和文档元素(Documents Elements)。

在XML中,通常采用了如下的语法:

任何的起始标签都必须有一个结束标签。

可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/)。

标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签

所有的特性都必须有值。

所有的特性都必须在值的周围加上双引号。

其中第一行为XML文档的声明,其他如“学生”、“姓名”、“性别”等标签称为XML文档的元素(Element),且必须是成对出现的、封闭的、各标签之间没有交叉。

2 Java访问XML文档的方法

2.1 DOM JAXP Crimson解析器

DOM方式是以层次结构组织的节点或信息片断的集合。其优点是允许应用程序对数据和结构做出更改以及文件的访问是双向的。

2.2 SAX

SAX方式不用等待所有的数据被处理分析而能够立即开始执行,访问方式的效率和性能都比较高。其缺点是程序的复杂程度高,另外它是一种单向的访问方式,且不支持XPath。

2.3 JDOM

JDOM使用的是具体的类而不是使用接口。这在某些方面简化了API,但是也限制了灵活性。JDOM自身不包含解析器,一般使用SAX2解析器来解析和验证XML文档。

2.4 DOM4J

DOM4J大量使用了API中的Collections类,支持XPath并且有较好的性能。但大量接口的使用,以及API的复杂程序也相应增加。

3 JDOM简介

JDOM简化与XML的交互并且比使用DOM实现更快。JDOM通常使用SAX2解析器来解析和验证输入XML文档。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。

4 JDOM编程

4.1 JDOM构成

(1)org.jdom XML文档要素的Java类;

(2)org.jdom.adapters 与dom适配的Java类;

(4)org.jdom.filter XML文档的过滤器类;

(5)org.jdom.input XML文档的读取类;

(6)org.jdom.output XML文档的写入类;

(7)org.jdom.transform 文档转换接口类;

(8)org.jodm.xpath XML文档xpath操作类。

4.2 主要API

(1)SAXBuilder.builder(“*.xml”);获取XML文件;

(2)Element.getChildren();获取该节点的所有子节点;

(3)Element.getChild(“节点名”);获取子节点实例;

(4)Element.getAttribute(“属性名”);获取该节点属性值;

(5)Element.getText();获取该节点的文本;

(6)Element.addContent(Element);添加子节点;

(7) Element.setAttribute(“属性名”,”属性值”);添加节点属性;

(8)Element.setText(“文本值”);添加节点文本值。

读取XML文件的基本示例:

SAXBuilder builder= new SAXBuilder();

Document doc=builder.build(url);

Element root=doc.getRootElement();

List list=root.getChildren();

For(i=0;i

Element sNo=(Element)student.getChildren().get(0);

Element sName=(Element)student.getChildren().get(1);

Element sAge=(Element)student.getChildren().get(2);

……

}

首先利用SAXBuilder.bulilder对象打开XML文件,然后利用getRootElement()方法读取root的所有节点,并将其返回至一个集合列表,最后利用循环将列表中的所有子节点读取出来,以达到读取XML文件的目的。可以看出,该示例结构简单,使用方便,易于理解XML文件的结构以及内存中的DOM模型。

5 结语

XML文件已经成为项目配置的标准文件类型,广泛的应用使得对XML文件的访问成为了必须的因素。更高效地使用XML文件,更快速地搜索或布署XML文件,都要求进行编程对XML文件的读写,JDOM应该是一种相对简单的方法,对象丰富,易于理解,容易掌握。