大大毛 的筆記

            DDM's Note

          哪怕沒有辦法一定有說法,
          就算沒有鴿子一定有烏鴉,
          固執無罪 夢想有價,
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁 ::  :: 聯系 ::  :: 管理

          Digester類的簡單使用方法

          Posted on 2006-07-20 23:57 大大毛 閱讀(2258) 評論(0)  編輯  收藏 所屬分類: Struts

          用一個小實例演示:
          ?????????該例子將演示:讀者正在讀書的情況(讀的什么書,各讀了多少章節)

          ???.需要解析的數據XML

          XML文件

          ???. 需要用到的類:

          Reader類

          Book類

          Chapter類

          測試(演示使用方法):

          測試用例


          運行效果:
          ???姓名:大大毛
          ???共讀書:2本
          ???*****************************
          ???書名:精通Struts?????? 作者:孫衛琴
          ???------------------------------
          ???共讀3章
          ???第1章??? Struts與Java Web應用簡介
          ???第2章??? Struts應用:helloapp應用
          ???第3章??? Struts應用的需求分析與設計
          ???------------------------------
          ???書名:Hibernate開發指南?????? 作者:夏昕
          ???------------------------------
          ???共讀1章
          ???第1章??? Hibernate初識
          ???------------------------------

          ???從測試用例中可以看出,Digester不光解析了XML所含的數據并對照新建了對象,而且還復原了對象之間的關系(一個樹的結構)


          Digester類常用方法:

          addObjectCreate(String?rule,Class? class )

          ???該方法用于構造指定類的對象,
          ???構造時機:
          發現String rule規則所指定的節點

          addSetProperties(String?rule)

          ???該方法用于設置對象的屬性,
          ???設置方法:取String rule規則所指定標簽的屬性?一一對應 的調用對象的setter,注意對象屬性的名稱必須與XML中標簽屬性名稱一致,可一次設置多個屬性
          ???設置時機:發現String rule規則所指定的節點;

          addBeanPropertySetter(String?rule)

          ???該方法的作用及使用方法類似于addSetProperties,只不過它是用String rule規則所指定標簽的值 來 調用對象的setter;

          addCallMethod(String?rule,String?methodName, int ?paraNumber)

          ???該方法同樣是設置對象的屬性,但是方式更加靈活,不需要對象具有setter
          ???設置方法:取String rule規則指定標簽的屬性? 來 調用對象的方法(String methodName參數即是需要調用的方法名),int paraNumber參數是表示方法需要的參數個數
          ???注意:當paraNumber = 0時,可以單獨使用(表明為標簽的值來調用),不然需要配合addCallParam方法

          addCallParam(String?rule, int ?paraIndex,String?attributeName)

          ???該方法與addCallMethod配合使用
          ???設置方法:取String rule規則指定標簽的屬性值來調用方法
          ???參數:
          ??????int paraIndex:表明需要填充的方法形參序號,從 0 開始,方法由addCallMethod指定
          ??????String attributeName:指定標簽屬性名稱

          addSetNext(String?rule,String?methodName)

          ???該方法用于指定下一次出現該標簽時,調用父對象的方法名,與addObjectCreate方法相呼應(不一定會對應,除非是push了Root元素)
          ???流程:
          ??????1.新建當前層元素的對象,相當于一個addObjectCreate
          ??????2.用新建的對象作為參數去調用父對象的指定方法(方法名由String methodName指定)
          ???作用:
          ??????可以復原標簽所表現出來的層次關系

          使用Digester所需要的包:
          ???1. commons-beanutils.jar
          ???2. commons-collections.jar
          ???3. commons-digester.jar
          ???4. commons-logging.jar
          ??如果安裝了Struts框架,那么這些包就都有了

          使用注意事項:
          ???1.Digester類調用的順序,必須與XML數據文件絕對一致;
          ???2.Digester類依賴于JavaBean規范,類必須符合規范;
          ???3.XML文件中標簽/屬性的名稱必須與Bean中的一致(包括大小寫);

          i am ddm

          主站蜘蛛池模板: 汾阳市| 太保市| 大连市| 邢台市| 同心县| 阳泉市| 岳阳市| 合作市| 凉山| 东山县| 六安市| 大埔县| 太康县| 渝北区| 望谟县| 佛山市| 靖安县| 龙游县| 崇文区| 革吉县| 和田市| 北流市| 宜丰县| 玛沁县| 湖南省| 宜章县| 威海市| 堆龙德庆县| 宣化县| 双牌县| 佳木斯市| 永德县| 民县| 镇雄县| 丰原市| 淮北市| 瑞安市| 嵊州市| 南丰县| 江阴市| 公主岭市|