Rex Mao

          分享java技術與生活

          XML的DOM解析器的java實現(二) 程序結構設計

           

          結構設計

          各個類的功能介紹

          Node、Element、DocumentAttrW3CDOM規范要求實現的接口。還有其它接口未列出。

          SimpleNode 繼承Node接口,實現Node接口的基本功能。

           

          SimpleElement繼承NodeElement接口,對應DOM樹中的標準節點,也就是XML文件中的一個標簽。

           

          SimpleDocument 繼承NodeDocument接口,對應整個DOM樹,它是解析器解析完成后,返回的對象。用戶可以使用該對象訪問整個DOM樹。

           

          SimpleAttr 繼承NodeAttr接口,對應DOM樹中的屬性節點,用于存放屬性名稱和屬性值。

           

          CharCollector 字符收集器類,它直接與XML文件接觸,根據需要向調用者提供下一個標簽或文本等數據。

           

          SimpleDOMParser 解析器的核心類,它使用CharCollector類,得到標簽、文本等數據。使用SimpleElementSimpleAttr等類存放數據,生成SimpleDocumnet對象返回給調用者。

           

          MainFrame 用戶界面類,它將解析結果展示給用戶,并且根據用戶的操作,與用戶進行交互。

           

          Manager 中間層管理類,它協調用戶界面(MainFrame)與解析器內核(SimpleDOMParser)之間的關系,實現解析器的控制。

           

          內部接口設計

          類名稱

          調用類

          調用功能

          SimpleDOMParser

          SimpleElement

          節點的存儲,查找,刪除。

          SimpleDOMParser

          SimpleAttr

          屬性節點的存儲,查找,刪除。

          SimpleDOMParser

          SimpleDocument

          生成DOM

          SimpleDomParser

          CharCollector

          字符收集,得到標簽與文本等。

          Manager

          SimpleDOMParser

          解析XML文檔

          Manager

          MainFrame

          用戶界面的相關操作

           

          用例關系設計

          用例介紹

          用戶:          參與者, 即軟件的使用者。

          XML文件:       參與者,XML文件。

          鏈接的文件:    參與者,XML文件中鏈接的外部文件。

          選擇XML文件: 用戶通過文件選擇框選擇一個本地的XML文件。

          選擇URL地址: 用戶輸入一個有效的URL,指向網絡上的XML格式的網頁。

          解析XML文件: 用戶確定對XML文件進行解析,該項操作要發生在選擇XML文件或選擇URL地址之后。

          修改文件:        用戶對XML文件進行修改

          保存文件:        用戶通過文件選擇框,選擇位置保存XML文件。

          選擇DOM樹節點:用戶選擇解析后的DOM樹型結構上的節點。

          解析器解析:     解析器對XML進行解析

          收集字符:        字符收集器負責處理XML的字符數據

          界面展示:        通過樹型結構和圖表向用戶展示數據。

           

          字符收集器有限狀態機

          DFA M={S,Ts,Tp,Tq,Cp,Ep,Er,Q},{LT,RT,A,C,EC,,EOF,NL,NLRA},f,S,{Q}

           

          其中 字符集:

          LT={<}

          RT={/>}

          A={&amp,&lt,&gt,&apos,&qout}

          C={<!CDATA[[}

          EC={]]>}

          EOF代表文件結束

          NL代表不是<的字符

          NLRA 代表除去LT,RT,LTL,A,C的所有字符

           

          狀態:

          S 開始狀態

          Ts:標簽處理開始狀態

          Tp:標簽處理狀態

          Tq:標簽處理結束狀態

          CpCDATA節點處理狀態

          Ep:內建實體處理狀態

          Er:錯誤狀態

          Q:結束狀態

           

          狀態轉換函數:

           

          f(S,LT)=Ts

          f(S,NL)=Er

          f(Tp,RT)=Tq

          f(Tp,A)=Cp

          f(Tp,C)=Ep

          f(Ep,EC)=Tp

          f(Ep,EOF)=Er

          f(Tq,LT)=Ts

          f(Tq,EOF)=Q

          f(Tq,NLRA)=Tq

           

          posted on 2007-05-27 13:10 Rex Mao 閱讀(1434) 評論(1)  編輯  收藏 所屬分類: 技術

          評論

          # re: XML的DOM解析器的java實現(二) 程序結構設計 2008-06-19 18:04 zhujie

          我是一名學生,老師讓我做xml文檔的dom解析,我想也用java實現,你能否共享一下代碼,對我畢設幫助很大,非常感謝  回復  更多評論   

          主站蜘蛛池模板: 庐江县| 漾濞| 麟游县| 鸡东县| 密山市| 天气| 上虞市| 佛教| 胶南市| 铜梁县| 吉木萨尔县| 临清市| 黑水县| 类乌齐县| 湘西| 庄浪县| 洛宁县| 淮安市| 衢州市| 乐东| 宜宾市| 瑞丽市| 余干县| 城步| 云南省| 徐州市| 井陉县| 大新县| 兰溪市| 海原县| 湛江市| 九台市| 丹凤县| 东台市| 益阳市| 清新县| 蒲江县| 德钦县| 和静县| 哈巴河县| 内丘县|