Java实现DOM文档操纵和XML文件相互转换
当前位置:以往代写 > JAVA 教程 >Java实现DOM文档操纵和XML文件相互转换
2019-06-14

Java实现DOM文档操纵和XML文件相互转换

Java实现DOM文档操纵和XML文件相互转换

副标题#e#

本文扼要描写了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。


#p#副标题#e#

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文件

#p#分页标题#e#

// 得到将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的处理惩罚。

    关键字:

在线提交作业