<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

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


    網站導航:
     
    主站蜘蛛池模板: ZZIJZZIJ亚洲日本少妇JIZJIZ | 亚洲乱码一二三四五六区| 337P日本欧洲亚洲大胆艺术图| 日本免费网址大全在线观看| 亚洲高清在线视频| 激情小说亚洲色图| 国产亚洲高清不卡在线观看| 国产在线观看xxxx免费| 久久精品国产精品亚洲| 人禽伦免费交视频播放| 精品亚洲一区二区三区在线播放| 青青草原1769久久免费播放| 亚洲A∨无码无在线观看| 成人免费视频一区二区三区| 亚洲精品日韩一区二区小说| 日本高清免费不卡视频| 直接进入免费看黄的网站| vvvv99日韩精品亚洲| 免费一区二区无码视频在线播放| 亚洲AⅤ无码一区二区三区在线 | 中文字幕无线码中文字幕免费| 亚洲电影在线免费观看| 特级做A爰片毛片免费69| 中文有码亚洲制服av片| 国产成人免费福利网站| 免费无遮挡无遮羞在线看| 亚洲第一香蕉视频| 亚洲午夜福利在线观看| 2021在线永久免费视频| 精品国产日韩久久亚洲| 亚洲国产精品成人精品无码区| 永久免费在线观看视频| 久99久无码精品视频免费播放| 亚洲五月六月丁香激情| 久久精品国产精品亚洲人人 | 亚洲国产中文字幕在线观看| AAAAA级少妇高潮大片免费看| 亚洲精品天堂无码中文字幕| 亚洲国产精品日韩在线| 免费中文字幕在线| 亚欧免费无码aⅴ在线观看|