在畢業(yè)設(shè)計(jì)(基于XML的電子商務(wù)平臺(tái))的時(shí)候,我參考了幾種處理XML文檔的組件,DOM、JDOM等,最好我選擇了用JDOM(當(dāng)時(shí)感覺自己用的技術(shù) 比較先進(jìn))。但是在最近偶爾的機(jī)會(huì)見到了digester這個(gè)東西,感覺好奇所以今天學(xué)習(xí)了一下: org.apache.commons.digester軟件包。以下網(wǎng)址有一個(gè)很不錯(cuò)的介紹: http://www./pub/a/onjava/2002/10/23/digester.html?page=1 它能方便地將XML文檔所定義的元素轉(zhuǎn)化為JAVA對(duì)象,其實(shí)它的用法有點(diǎn)象棧(當(dāng)然內(nèi)在的原理就是那個(gè)古老的東西,只是提供了更高一層的封裝)。 //生成一個(gè)digester。主要需要引進(jìn)commons-logging.jar、commons-collections.jar、commons- beanutils.jar Digester digester = new Digester(); //設(shè)置對(duì)XML文檔資料是否進(jìn)行DTD驗(yàn)證 digester.setValidating( false ); //當(dāng)遇見 catalog 元素的時(shí)候,產(chǎn)生一個(gè)Catalog對(duì)象 digester.addObjectCreate( "catalog", Catalog.class ); //當(dāng)遇見 catalog 元素下面的book的時(shí)候,產(chǎn)生一個(gè)Book對(duì)象 digester.addObjectCreate( "catalog/book", Book.class ); // 當(dāng)遇見 catalog 元素下面的book的author時(shí)候,調(diào)用author屬性的Set方法 digester.addBeanPropertySetter( "catalog/book/author", "author" ); digester.addBeanPropertySetter( "catalog/book/title", "title" ); //當(dāng)再一次遇見 catalog 元素下面的book的時(shí)候,調(diào)用catalog類的addBook()方法 digester.addSetNext( "catalog/book", "addBook" ); digester.addObjectCreate( "catalog/magazine", Magazine.class ); digester.addBeanPropertySetter( "catalog/magazine/name", "name" ); digester.addObjectCreate( "catalog/magazine/article", Article.class ); //addSetProperties()是將對(duì)應(yīng)元素的屬性賦值。 digester.addSetProperties( "catalog/magazine/article", "page", "page" ); digester.addBeanPropertySetter( "catalog/magazine/article/headline" ); digester.addSetNext( "catalog/magazine/article", "addArticle" ); digester.addSetNext( "catalog/magazine", "addMagazine" ); //"F:\\Digester\\catalog.xml"為XML文檔 File input = new File( "F:\\Digester\\catalog.xml" ); Catalog c = (Catalog)digester.parse( input ); System.out.println( c.toString() ); 在測(cè)試以上網(wǎng)站的例子的時(shí)候引進(jìn):commons-digester.jar,另外請(qǐng)你引進(jìn):commons-logging.jar、commons-collections.jar、commons-beanutils.jar 這是因?yàn)樵趫?zhí)行: Digester digester = new Digester();的時(shí)候配置了LOG(在apache下面的很多組件都會(huì)用到它的公用組件)。 |
||||
|
|