在Java中实现DOM文档和XML文件互相转换

bjtxysbl

bjtxysbl

2016-02-19 21:00

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的在Java中实现DOM文档和XML文件互相转换,希望大家看完后能赶快学习起来。
 

文简要描述了DOM的概念和内部逻辑结构,实例讲述DOM文档操作和XML文件互相转换的java实现过程。

1. DOM简介

目前,W3C已于2000年11月13日推出了规范DOM level 2。文档对象模型(DOM)是HTML和XML文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语言在各种平台上实现。该模型定义了THML和XML文件在内存中的逻辑结构(即为文档),提供了访问、存取THML和XML文件的方法。利用DOM规范,可以实现DOM 文档和XML之间的相互转换,遍历、操作相应DOM文档的内容。可以说,要自由的操纵XML文件,就要用到DOM规范。

2. DOM内部逻辑结构

DOM文档中的逻辑结构可以用节点树的形式进行表述。通过对XML文件的解析处理,XML文件中的元素便转化为DOM文档中的节点对象。DOM的文档节点有Document、Element、Comment、Type等等节点类型,其中每一个DOM文档必须有一个Document节点,并且为节点树的根节点。它可以有子节点,或者叶子节点如Text节点、Comment节点等。任何的格式良好的XML文件中的每一个元素均有DOM文档中的一个节点类型与之对应。利用DOM接口将XML文件转化成DOM文档后,我们就可以自由的处理XML文件了。

3. java中的DOM接口

DOM规范提供的API的规范,目前Sun公司推出的jdk1.4测试版中的java API遵循了 DOM level 2 Core推荐接口的语义说明,提供了相应的java语言的实现。

在org.xml.dom中,jkd1.4提供了Document、DocumentType、Node、NodeList、Element、Text等接口,这些接口均是访问DOM文档所必须的。我们可以利用这些接口创建、遍历、修改DOM文档。

在javax.xml.parsers中,jkd1.4提供的DoumentBuilder和DocumentBuilderFactory组合可以对XML文件进行解析,转换成DOM文档。

在javax.xml.transform.dom和javax.xml.transform.stream中,jdk1.4提供了DOMSource类和StreamSource类,可以用来将更新后的DOM文档写入生成的XML文件中。

4. 例程

4.1 将XML文件转化成DOM文档

这个过程是获得一个XML文件解析器,解析XML文件转化成DOM文档的过程。

Jdk1.4中,Document接口描述了对应于整个XML文件的文档树,提供了对文档数据的访问,是该步骤的目标。Document接口可以从类DocumentBuilder中获取,该类包含了从XML文档获得DOM文档实例的API。XML的解析器可以从类DocumentBuilderFactory中获取。在jdk1.4中,XML文件转化成DOM文档可以有如下代码实现:

//获得一个XML文件的解析器

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

//解析XML文件生成DOM文档的接口类,以便访问DOM。

DocumentBuilder builder = factory.newDocumentBuilder();

document = builder.parse( new File(FileName) );

4.2 遍历DOM文档

获得接口类document实例后,可以对DOM的文档树进行访问。要遍历DOM文档,首先要获得Root元素。然后获得Root元素的子节点列表。这里通过递归的方法实现遍历的目的。

//获得Root元素

Element element = document.getDocumentElement();

//获得Root元素的子节点列表

nodelist = element.getChildNodes();

//用递归方法实现DOM文档的遍历

GetElement(nodelist);

其中GetElement方法实现如下:

  public void GetElement(NodeList nodelist){  Node cnode;  int i,len;  String str;  if(nodelist.getLength() == 0)  // 该节点没有子节点  return;  }  for(i=0;i 1)  System.out.println(" "+str+" "+len);  }  }  }

注意:上面的代码只是显示Node类型和Text类型的对象。它们的类型标识分别是1和3。

4.3 修改DOM文档

修改DOM文档的API在DOM level 2 Core规范中做了说明,jkd1.4中的org.xml.dom中实现了这些API。修改DOM文档操作主要集中在Document、Element、Node、Text等类中,这里给出的例子中是在解析出的DOM文档中增加一系列对象,对应与在XML文件中增加一条记录。

// 获得Root对象

Element root = document.getDocumentElement();

// 在DOM文档中增加一个Element节点

Element booktype = document.createElement("COMPUTES");

//将该节点转化成root对象的子节点

root.appendChild(cdrom);

//在DOM文档中增加一个Element节点

Element booktitle = document.createElement("Title");

//将该节点转化成booktype对象的子节点

booktype.appendChild(booktitle);

//在DOM文档中增加一个Text节点

Text bookname = document.createTextNode("understand Corba");

//将该节点转化成bookname对象的子节点

booktitle.appendChild(bookname);

4.4 将DOM文档转化成XML文件

// 获得将DOM文档转化为XML文件的转换器,在jdk1.4中,有类TransformerFactory

// 来实现,类Transformer实现转化API。

TransformerFactory tfactory = TransformerFactory.newInstance();

Transformer transformer = tfactory.newTransformer();

// 将DOM对象转化为DOMSource类对象,该对象表现为转化成别的表达形式的信息容器。

DOMSource source = new DOMSource(document);

/* 获得一个StreamResult类对象,该对象是DOM文档转化成的其他形式的文档的容器,

可以是XML文件,文本文件,HTML文件。这里为一个XML文件。*/

StreamResult result = new StreamResult(new File(“text.xml”));

// 调用API,将DOM文档转化成XML文件。

transformer.transform(source,result);

这里提供了该例程的完整程序,该例程在windows 2000中jdk1.4环境中运行通过。

以上给出了一个例子,读者可以从中了解到对DOM操作的思路。因为对DOM的操作均遵循了DOM规范,所以也适用于其它语言对DOM的处理。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

在Java中实现DOM文档和XML文件互相转换

编程语言 网络编程
在Java中实现DOM文档和XML文件互相转换

Java实现用DOM文档和XML文件互换的操作

编程语言 网络编程
Java实现用DOM文档和XML文件互换的操作

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

DOM文档如何与XML文件互换?

Web开发
DOM文档如何与XML文件互换?

Java中合并XML文档的设计与实现

编程语言 网络编程
Java中合并XML文档的设计与实现

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

javascript实现unicode和字符的互相转换

Web开发
javascript实现unicode和字符的互相转换

dom规范和在java中的实现 sunmingdong

编程语言 网络编程
dom规范和在java中的实现 sunmingdong

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux中出现/usr/bin/ld: cannot find -lxxx报错该怎么办?

Linux中出现/usr/bin/ld: cannot find -lxxx报错该怎么办?

维护XP系统安全必须遵守的十三条法则

维护XP系统安全必须遵守的十三条法则
下拉加载更多内容 ↓