|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
主要缺点就是:速度比较慢,没有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来编写应用程序和电脑游戏。 |
|