海妖 发表于 2015-1-18 11:37:02

JAVA网页编程之DOM文档操纵和XML文件相互转换的java实...

java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.dom|xml|转换DOM文档操纵和XML文件相互转换的java完成

[作者:郭洪锋增加工夫:2001-10-198:16:09]




郭洪锋(ghf_email@sohu.com)

简介:该文扼要形貌了DOM的观点和外部逻辑布局,给出了DOM文档操纵和XML文件相互转换的java完成历程。
1.DOM简介
今朝,W3C已于2000年11月13日推出了标准DOMlevel2。文档对象模子(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测试版中的javaAPI遵守了DOMlevel2Core保举接口的语义申明,供应了响应的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文件的剖析器
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
//剖析XML文件天生DOM文档的接口类,以便会见DOM。
DocumentBuilderbuilder=factory.newDocumentBuilder();
document=builder.parse(newFile(FileName));



4.2遍历DOM文档
取得接口类document实例后,能够对DOM的文档树举行会见。要遍历DOM文档,起首要取得Root元素。然后取得Root元素的子节点列表。这里经由过程递回的办法完成遍历的目标。


//取得Root元素
Elementelement=document.getDocumentElement();
//取得Root元素的子节点列表
nodelist=element.getChildNodes();
//用递回办法完成DOM文档的遍历
GetElement(nodelist);
个中GetElement办法完成以下:
publicvoidGetElement(NodeListnodelist){
Nodecnode;
inti,len;
Stringstr;

if(nodelist.getLength()==0){
//该节点没有子节点
return;
}
for(i=0;i1)
System.out.println(""+str+""+len);
}
}
}

注重:下面的代码只是显现Node范例和Text范例的对象。它们的范例标识分离是1和3。

4.3修正DOM文档
修正DOM文档的API在DOMlevel2Core标准中做了申明,jkd1.4中的org.xml.dom中完成了这些API。修正DOM文档操纵次要会合在Document、Element、Node、Text等类中,这里给出的例子中是在剖析出的DOM文档中增添一系列对象,对应与在XML文件中增添一笔记录。
//取得Root对象
Elementroot=document.getDocumentElement();
//在DOM文档中增添一个Element节点
Elementbooktype=document.createElement("COMPUTES");
//将该节点转化成root对象的子节点
root.appendChild(cdrom);
//在DOM文档中增添一个Element节点
Elementbooktitle=document.createElement("Title");
//将该节点转化成booktype对象的子节点
booktype.appendChild(booktitle);
//在DOM文档中增添一个Text节点
Textbookname=document.createTextNode("understandCorba");
//将该节点转化成bookname对象的子节点
booktitle.appendChild(bookname);



4.4将DOM文档转化成XML文件
//取得将DOM文档转化为XML文件的转换器,在jdk1.4中,有类TransformerFactory
//来完成,类Transformer完成转化API。
TransformerFactorytfactory=TransformerFactory.newInstance();
Transformertransformer=tfactory.newTransformer();
//将DOM对象转化为DOMSource类对象,该对象体现为转化成其余表达情势的信息容器。

DOMSourcesource=newDOMSource(document);
//取得一个StreamResult类对象,该对象是DOM文档转化成的其他情势的文档的容器,能够是XML文件,文本文件,HTML文件。这里为一个XML文件。
StreamResultresult=newStreamResult(newFile(“text.xml”));
//挪用API,将DOM文档转化成XML文件。
transformer.transform(source,result);


这里供应了该例程的完全程序,该例程在windows2000中jdk1.4情况中运转经由过程。

以上给出了一个例子,读者能够从中懂得到对DOM操纵的思绪。由于对DOM的操纵均遵守了DOM标准,以是也合用于别的言语对DOM的处置。

参考材料:

http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-2000-1113
Java2Platform,StandardEdition,V1.4.0APISpecificaion

关于作者
郭洪锋:次要处置UNIX体系下散布式使用的开辟和研讨。您能够经由过程电子邮件ghf_email@sohu.com和他接洽。

还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。

透明 发表于 2015-1-21 11:10:35

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

若相依 发表于 2015-1-22 06:22:08

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

第二个灵魂 发表于 2015-1-22 23:00:01

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

愤怒的大鸟 发表于 2015-1-31 07:01:56

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

柔情似水 发表于 2015-2-6 18:11:18

是一种突破用户端机器环境和CPU

深爱那片海 发表于 2015-2-9 22:03:28

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

乐观 发表于 2015-2-27 23:30:34

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

金色的骷髅 发表于 2015-3-9 15:08:25

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

不帅 发表于 2015-3-10 01:51:13

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

老尸 发表于 2015-3-11 16:27:37

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

活着的死人 发表于 2015-3-16 09:50:31

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

兰色精灵 发表于 2015-3-18 20:53:06

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

再见西城 发表于 2015-3-26 14:06:48

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

爱飞 发表于 2015-3-31 15:24:04

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

小妖女 发表于 2015-4-1 14:09:04

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

山那边是海 发表于 2015-4-1 15:10:17

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

仓酷云 发表于 2015-4-7 00:28:34

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

冷月葬花魂 发表于 2015-4-10 01:17:48

是一种语言,用以产生「小应用程序(Applet(s))

admin 发表于 2015-4-12 22:28:56

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
页: [1] 2
查看完整版本: JAVA网页编程之DOM文档操纵和XML文件相互转换的java实...