欢迎光临
我们一直在努力

用Digester简化XML文档处理(1)-JSP教程,Java与XML

建站超值云服务器,限时71元/月

digester框架属于jakarta commons,它以规则和模式为基础处理xml文档。与sax和dom之类的标准api相比,digester不涉及太多的细节问题,非常适合于对xml文档进行简单的处理。 
在java和xml开发中,一个常见的任务是把xml文档转换成对应的java bean对象的层次结构。人们经常用标准的sax和dom api来完成这个任务。虽然这两种api都很强大和灵活,但对于某些简单的任务来说,它们显得操作层次太低,也就是说,涉及了太多的细节问题。jakarta digester框架能够很好地满足这类场合的需要。 
digester框架简介 

jakarta的digester框架从struts框架发展而来,原先被用来处理struts-config.xml配置文件,但很快人们认识到它有着更广泛的用途,把它转入了jakarta commons项目。jakarta commons的目标是提供一个“可重用java组件的仓库”。digester最新的版本是1.3,于2002年8月13日发布。 
digester框架允许开发者指定一组动作,当解析器在xml文档中发现某些特定的简单模式时动作被执行。digester框架带有10个预定义的规则(rule),涵盖了unmarshalling xml(例如创建bean或设置bean属性)的大多数需求( marshalling的原意是指“配制整齐,编组列车”,marshalling是在内存中为java对象生成xml描述文档的过程,而unmarshalling是指把xml形式的描述转换到可用java代码操作的对象的过程,我们称之为“反配制”),但必要时用户可以定义和实现自己的规则。 
在本文的例子中,我们将反配制下面这个xml文档: 
<?xml version=”1.0″?>
<catalog library=”somewhere”>
  <book>
    <author>author 1</author>
    <title>title 1</title>
  </book>
  <book>
    <author>author 2</author>
    <title>his one book</title>
  </book>
  <magazine>
    <name>mag title 1</name>
    <article page=”5″>
      <headline>some headline</headline>
    </article>
    <article page=”9″>
      <headline>another headline</headline>
    </article>
  </magazine>
  <book>
    <author>author 2</author>
    <title>his other book</title>
  </book>
  <magazine>
    <name>mag title 2</name>
    <article page=”17″>
      <headline>second headline</headline>
    </article>
  </magazine>
</catalog>

下面是bean的代码。注意使用digester框架时,bean类必须定义成public。
import java.util.vector;
public class catalog {
  private vector books;
  private vector magazines;
  public catalog() {
    books = new vector();
    magazines = new vector();
  }
  public void addbook( book rhs ) {
    books.addelement( rhs );
  }
  public void addmagazine( magazine rhs ) {
    magazines.addelement( rhs );
  }
  public string tostring() {
    string newline = system.getproperty( “line.separator” );
    stringbuffer buf = new stringbuffer();
    buf.append( “— books —” ).append( newline );
    for( int i=0; i<books.size(); i++ ){
      buf.append( books.elementat(i) ).append( newline );
    }
    buf.append( “— magazines —” ).append( newline );
    for( int i=0; i<magazines.size(); i++ ){
      buf.append( magazines.elementat(i) ).append( newline );
    }
    return buf.tostring();
  }
}
//===================================================
public class book {
  private string author;
  private string title;
  public book() {}
  public void setauthor( string rhs ) { author = rhs; }
  public void settitle( string rhs ) { title = rhs; }
  public string tostring() {
    return “book: author=” + author + ” title=” + title + “”
  }
}
//===================================================
import java.util.vector;
public class magazine {
  private string name;
  private vector articles;
  public magazine() {
    articles = new vector();
  }
  public void setname( string rhs ) { name = rhs; }
  public void addarticle( article a ) {
    articles.addelement( a );
  }
  public string tostring() {
    stringbuffer buf = new stringbuffer( “magazine: name=” + name + ” “);
    for( int i=0; i<articles.size(); i++ ){
      buf.append( articles.elementat(i).tostring() );
    }
    return buf.tostring();
  }
}
//===================================================
public class article {
  private string headline;
  private string page;
  public article() {}
  public void setheadline( string rhs ) { headline = rhs; }
  public void setpage( string rhs ) { page = rhs; }
  public string tostring() {
    return “article: headline=” + headline + ” on page=” + page + ” “
  }
}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用Digester简化XML文档处理(1)-JSP教程,Java与XML
分享到: 更多 (0)