沉睡森林@漂在北京

          本處文章除注明“轉載”外均為原創,轉載請注明出處。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            152 隨筆 :: 4 文章 :: 114 評論 :: 0 Trackbacks

          利用DigesterXML文件進行解析

           

          以前解析XML文件主要是使用JDOM,最近研究StrutsiBatis的代碼,發現他們都是使用了Digester這種快速將XML轉化為ObjectXML處理組件。于是,我便花了一點時間找了一個DigesterDemo。下面是代碼:

          package com.example.demo.domain;

          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 + "' ";

              }

          }

           

          package com.example.demo.domain;

           

          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 + "'";

           

              }

          }

           

          package com.example.demo.domain;

           

          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();

           

              }

          }

           

          package com.example.demo.domain;

           

          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();

           

              }

          }

           

          上面是4domain對象。下面是處理解析對象。

          package com.example.demo.digester;

           

          import java.io.File;

           

          import org.apache.commons.digester.Digester;

           

          import com.example.demo.domain.Article;

          import com.example.demo.domain.Book;

          import com.example.demo.domain.Catalog;

          import com.example.demo.domain.Magazine;

           

          public class DigesterDriver {

              public static void main(String[] args) {

           

                 try {

           

                     Digester digester = new Digester();

                     digester.setValidating(false);

                     digester.addObjectCreate("catalog", Catalog.class);

                     digester.addObjectCreate("catalog/book", Book.class);

                     digester.addBeanPropertySetter("catalog/book/author", "author");

                     digester.addBeanPropertySetter("catalog/book/title", "title");

                    

                     digester.addSetNext("catalog/book", "addBook");

                     digester.addObjectCreate("catalog/magazine", Magazine.class);

                     digester.addBeanPropertySetter("catalog/magazine/name", "name");

                     digester.addObjectCreate("catalog/magazine/article", Article.class);

                     digester.addSetProperties("catalog/magazine/article", "page", "page");

                     digester.addBeanPropertySetter("catalog/magazine/article/headline");

                     digester.addSetNext("catalog/magazine/article", "addArticle");

                     digester.addSetNext("catalog/magazine", "addMagazine");

                    

                    

                     File input = new File("E:\\MyProjects\\Workspace\\DigesterDemo\\src\\com\\example\\demo\\digester\\example.xml");

                    

                     Catalog c = (Catalog) digester.parse(input);

                     System.out.println(c.toString());

                 } catch (Exception exc) {

                     exc.printStackTrace();

                 }

              }

          }

           

          下面是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>

          posted on 2008-10-16 10:46 王總兵 閱讀(268) 評論(0)  編輯  收藏 所屬分類: Digester

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 朝阳县| 合阳县| 昭觉县| 临颍县| 迁安市| 金坛市| 息烽县| 汉沽区| 新平| 武平县| 邹城市| 疏勒县| 鲜城| 昌邑市| 平舆县| 新宁县| 磴口县| 山阳县| 昌乐县| 凉城县| 汉川市| 开平市| 东乡族自治县| 根河市| 诏安县| 延川县| 秦皇岛市| 隆德县| 峨边| 博野县| 勃利县| 含山县| 会理县| SHOW| 莎车县| 娄烦县| 互助| 克拉玛依市| 富裕县| 凤城市| 巴彦淖尔市|