仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 406|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA网页设计教您疾速上手利用JDOM处置XML文档的技能...

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊dom|xml|技能JDOM的先容和与JAXB的对照

Java+XML=JDOM!

这就是JDOM计划者的方针。假如你已经利用过烦人的SAX或是DOM来处置XML,你就会晓得为何要有JDOM大概是JAXB。在JavaOne集会上JDOM的次要开创人JasonHunter有一篇出色的演讲先容了JDOM手艺,标题就是JDOMMakesXMLEasy。

在那篇文档里,JDOM被拿来与DOM对照,而我更乐意拿它同JAXB对照。由于JAXB和JDOM都是为了在Java中供应比DOM和SAX更加便利的XML处置接口而开辟的,而且经由过程完整分歧的路子来办理这个成绩。JDOM的处置体例是与DOM相似的树操纵。而JAXB经由过程DTD和绑定形式来天生会见XML文档的Java代码,将XML映照成了Java对象来操纵。你能够依据项目标必要和团体喜欢来决意接纳哪个。

JDOM与JAXB的对照,从自己的特性来看:

1)JDOM比JAXB更简单上手。利用JAXB起首要会编写DTD,然后还要会编写绑定形式。JDOM没有如许的请求,假如你会Java和XML,乃至能够说光是看JDOM的javadoc文档就可以够利用JDOM。

2)JAXB编写好DTD和绑定形式今后,XML文档被映照成了Java对象,其数据就是Java对象的属性,连数据范例都做好了转换,因而,会见XML文档比JDOM要烦琐,能够说是与日俱增。

3)JAXB由某个DTD和绑定形式天生的代码只能会见该DTD所束缚的文档。假如想要会见其他XML文档,必要再编写DTD和绑定形式。JDOM能够处置任何XML文档,包含受束缚的和不受束缚的。

今朝JDOM和JAXB都没有正式版本。JDOM的最新版本是beta8,JAXB是1.0earlyaccess,其标准版本是0.21。绝对而言,JDOM更成熟一些。比方JAXB不撑持名字空间、不克不及向XML文档写进处置指令,偶然我们必要保存的换行符和首尾空格在JAXB中主动过滤失落了,就连放在内里也不克不及幸免。JDOM就没有这些限定。假如说以上的3点对照是JDOM和JAXB自己的特性所决意的,几近不成能改动,那末这里标明,JAXB还必要更多的事情。

取得并安装JDOM

在http://jdom.org能够下载JDOM的最新版本。以JDOMbeta8的2进制版本为例。下载后解紧缩,JDOM的jar文件就是build目次下的文件jdom.jar,将之到场类路径。别的JDOM还必要lib目次下那些jar文件如xerces.jar的撑持。假如在利用中呈现以下毛病:
  1. java.lang.NoSuchMethodError
复制代码


  1. java.lang.NoClassDefFoundError:org/xml/sax/SAXNotRecognizedException
复制代码

你必要包管xerces.jar文件在CLASSPATH中位于其他XML类,如JAXP或Crimson之前,这些类文件,包含之前老版本的xerces,大概不撑持SAX2.0或DOMLevel2。因而招致了下面的毛病。

一个复杂的例子

JDOM的处置体例有些相似于DOM,但它次要是用SAX完成的,你不用忧虑处置速率和内存的成绩。别的,JDOM中几近没有接口,的类全体是实其实在的类,没有类工场类的。其最主要的一个包org.jdom中次要有以下类:
  1. CAttributeCCDATACCommentCDocTypeCDocumentCElementCEntityRefCNamespaceCProcessingInstructionCText
复制代码

数据输出要用到XML文档要经由过程org.jdom.input包,反过去必要org.jdom.output。如后面所说,关是看API文档就可以够利用。

我们的例子读进XML文件exampleA.xml,到场一条处置指令,修正第一本书的代价和作者,并增加一条属性,然后写进文件exampleB.xml:
  1. //exampleA.xml<?xmlversion="1.0"encoding="GBK"?><bookList><book><name>Java编程进门</name><author>张三</author><publishDate>2002-6-6</publishDate><price>35.0</price></book><book><name>XML在Java中的使用</name><author>李四</author><publishDate>2002-9-16</publishDate><price>92.0</price></book></bookList>//testJDOM.javaimportorg.jdom.*;importorg.jdom.output.*;importorg.jdom.input.*;importjava.io.*;publicclassTestJDOM{publicstaticvoidmain(Stringargs[])throwsException{SAXBuildersb=newSAXBuilder();//从文件机关一个Document,由于XML文件中已指定了编码,以是这里不用了Documentdoc=sb.build(newFileInputStream("exampleA.xml"));//到场一条处置指令ProcessingInstructionpi=newProcessingInstruction("xml-stylesheet","href="bookList.html.xsl"type="text/xsl"");doc.addContent(pi);Elementroot=doc.getRootElement();//失掉根元素java.util.Listbooks=root.getChildren();//失掉根元素一切子元素的汇合Elementbook=(Element)books.get(0);//失掉第一个book元素//为第一本书增加一条属性Attributea=newAttribute("hot","true");book.setAttribute(a);Elementauthor=book.getChild("author");//失掉指定的字元素author.setText("王五");//将作者改成王五//或Textt=newText("王五");book.addContent(t);Elementprice=book.getChild("price");//失掉指定的字元素//修正代价,对照忧郁的是我们必需本人转换数据范例,而这恰是JAXB的上风author.setText(Float.toString(50.0f));Stringindent="";booleannewLines=true;XMLOutputteroutp=newXMLOutputter(indent,newLines,"GBK");outp.output(doc,newFileOutputStream("exampleB.xml"));}};
复制代码

实行了局exampleB.xml:
  1. <?xmlversion="1.0"encoding="GBK"?><bookList><bookhot=”true”><name>Java编程进门</name><author>50.0</author><publishDate>2002-6-6</publishDate><price>35.0</price></book><book><name>XML在Java中的使用</name><author>李四</author><publishDate>2002-9-16</publishDate><price>92.0</price></book></bookList><?xml-stylesheethref="bookList.html.xsl"type="text/xsl"?>
复制代码

在默许情形下,JDOM的Element类的getText()这类的办法不会过滤空缺字符,假如你必要过滤,用setTextTrim()。
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
不帅 该用户已被删除
沙发
发表于 2015-1-20 15:08:28 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
admin 该用户已被删除
板凳
发表于 2015-1-21 21:35:13 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
透明 该用户已被删除
地板
发表于 2015-1-27 05:07:48 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
冷月葬花魂 该用户已被删除
5#
发表于 2015-1-28 05:44:18 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
老尸 该用户已被删除
6#
发表于 2015-2-5 11:49:02 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
第二个灵魂 该用户已被删除
7#
发表于 2015-2-11 15:26:19 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
若相依 该用户已被删除
8#
发表于 2015-3-2 14:35:26 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
活着的死人 该用户已被删除
9#
发表于 2015-3-11 03:56:02 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
金色的骷髅 该用户已被删除
10#
发表于 2015-3-17 20:08:14 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
因胸联盟 该用户已被删除
11#
发表于 2015-3-24 22:50:12 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 19:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表