<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    沉睡森林@漂在北京

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

      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 王總兵 閱讀(267) 評論(0)  編輯  收藏 所屬分類: Digester

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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲五月六月丁香激情| youjizz亚洲| 一个人免费高清在线观看| 亚洲av综合av一区二区三区| 亚洲美女色在线欧洲美女| 在线观看免费高清视频| 亚洲Aⅴ在线无码播放毛片一线天| 国产综合成人亚洲区| 国产成人精品免费直播| 三级黄色在线免费观看| 久久精品国产亚洲av麻豆蜜芽 | 国产精品亚洲片在线va| 又粗又黄又猛又爽大片免费 | 中文字幕亚洲第一| 亚洲欧美国产国产一区二区三区| 欧洲精品99毛片免费高清观看| 亚洲夜夜欢A∨一区二区三区| 未满十八私人高清免费影院| 亚洲天堂中文资源| 亚洲国产午夜中文字幕精品黄网站 | 国产中文在线亚洲精品官网| 亚洲高清中文字幕免费| 有色视频在线观看免费高清在线直播| 全亚洲最新黄色特级网站| 一区二区在线免费观看| 免费又黄又爽又猛大片午夜| 亚洲一区二区三区在线网站| 国产成人精品日本亚洲| 国产精品成人四虎免费视频| 免费H网站在线观看的| 中文字幕免费人成乱码中国| 亚洲av综合日韩| 亚洲五月综合缴情婷婷| 亚洲人成网址在线观看| 亚洲一区二区三区自拍公司| 免费h黄肉动漫在线观看| 啦啦啦中文在线观看电视剧免费版 | 四虎www成人影院免费观看| 亚洲国产成人久久精品大牛影视| 日韩免费视频在线观看| 国产精品久久免费|