JAVA网页设计用Digester简化XML文档处置(1)
主要缺点就是:速度比较慢,没有C和C++快xmlDigester框架属于JakartaCommons,它以划定规矩和形式为基本处置XML文档。与SAX和DOM之类的尺度API比拟,Digester不触及太多的细节成绩,十分合适于对XML文档举行复杂的处置。在Java和XML开辟中,一个罕见的义务是把XML文档转换成对应的JavaBean对象的条理布局。人们常常用尺度的SAX和DOMAPI来完成这个义务。固然这两种API都很壮大和天真,但关于某些复杂的义务来讲,它们显得操纵条理太低,也就是说,触及了太多的细节成绩。JakartaDigester框架可以很好地满意这类场所的必要。
Digester框架简介
Jakarta的Digester框架从Struts框架开展而来,本来被用来处置struts-config.xml设置文件,但很快人们熟悉到它有着更普遍的用处,把它转进了JakartaCommons项目。JakartaCommons的方针是供应一个“可重用Java组件的堆栈”。Digester最新的版本是1.3,于2002年8月13日公布。
Digester框架同意开辟者指定一组举措,当剖析器在XML文档中发明某些特定的复杂形式时举措被实行。Digester框架带有10个预界说的划定规矩(Rule),涵盖了unmarshallingXML(比方创立Bean或设置Bean属性)的年夜多半需求(marshalling的原意是指“配制划一,编组列车”,marshalling是在内存中为Java对象天生XML形貌文档的历程,而unmarshalling是指把XML情势的形貌转换到可用Java代码操纵的对象的历程,我们称之为“反配制”),但需要时用户能够界说和完成本人的划定规矩。
在本文的例子中,我们将反配制上面这个XML文档:
<?xmlversion="1.0"?>
<cataloglibrary="somewhere">
<book>
<author>Author1</author>
<title>Title1</title>
</book>
<book>
<author>Author2</author>
<title>HisOneBook</title>
</book>
<magazine>
<name>MagTitle1</name>
<articlepage="5">
<headline>SomeHeadline</headline>
</article>
<articlepage="9">
<headline>AnotherHeadline</headline>
</article>
</magazine>
<book>
<author>Author2</author>
<title>HisOtherBook</title>
</book>
<magazine>
<name>MagTitle2</name>
<articlepage="17">
<headline>SecondHeadline</headline>
</article>
</magazine>
</catalog>
上面是Bean的代码。注重利用Digester框架时,Bean类必需界说成public。
importjava.util.Vector;
publicclassCatalog{
privateVectorbooks;
privateVectormagazines;
publicCatalog(){
books=newVector();
magazines=newVector();
}
publicvoidaddBook(Bookrhs){
books.addElement(rhs);
}
publicvoidaddMagazine(Magazinerhs){
magazines.addElement(rhs);
}
publicStringtoString(){
Stringnewline=System.getProperty("line.separator");
StringBufferbuf=newStringBuffer();
buf.append("---Books---").append(newline);
for(inti=0;i<books.size();i++){
buf.append(books.elementAt(i)).append(newline);
}
buf.append("---Magazines---").append(newline);
for(inti=0;i<magazines.size();i++){
buf.append(magazines.elementAt(i)).append(newline);
}
returnbuf.toString();
}
}
//===================================================
publicclassBook{
privateStringauthor;
privateStringtitle;
publicBook(){}
publicvoidsetAuthor(Stringrhs){author=rhs;}
publicvoidsetTitle(Stringrhs){title=rhs;}
publicStringtoString(){
return"Book:Author="+author+"Title="+title+""
}
}
//===================================================
importjava.util.Vector;
publicclassMagazine{
privateStringname;
privateVectorarticles;
publicMagazine(){
articles=newVector();
}
publicvoidsetName(Stringrhs){name=rhs;}
publicvoidaddArticle(Articlea){
articles.addElement(a);
}
publicStringtoString(){
StringBufferbuf=newStringBuffer("Magazine:Name="+name+"");
for(inti=0;i<articles.size();i++){
buf.append(articles.elementAt(i).toString());
}
returnbuf.toString();
}
}
//===================================================
publicclassArticle{
privateStringheadline;
privateStringpage;
publicArticle(){}
publicvoidsetHeadline(Stringrhs){headline=rhs;}
publicvoidsetPage(Stringrhs){page=rhs;}
publicStringtoString(){
return"Article:Headline="+headline+"onpage="+page+""
}
}
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种将安全性(Security)列为第一优先考虑的语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 是一种将安全性(Security)列为第一优先考虑的语言 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Java是一种计算机编程语言,拥有跨平台、面向对java Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种使网页(Web Page)产生生动活泼画面的语言 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
页:
[1]
2