XML的DOM解析器的java實(shí)現(xiàn)(二) 程序結(jié)構(gòu)設(shè)計(jì)
結(jié)構(gòu)設(shè)計(jì)
各個類的功能介紹
Node、Element、Document、Attr為W3C的DOM規(guī)范要求實(shí)現(xiàn)的接口。還有其它接口未列出。
SimpleNode 繼承Node接口,實(shí)現(xiàn)Node接口的基本功能。
SimpleElement繼承Node和Element接口,對應(yīng)DOM樹中的標(biāo)準(zhǔn)節(jié)點(diǎn),也就是XML文件中的一個標(biāo)簽。
SimpleDocument 繼承Node和Document接口,對應(yīng)整個DOM樹,它是解析器解析完成后,返回的對象。用戶可以使用該對象訪問整個DOM樹。
SimpleAttr 繼承Node和Attr接口,對應(yīng)DOM樹中的屬性節(jié)點(diǎn),用于存放屬性名稱和屬性值。
CharCollector 字符收集器類,它直接與XML文件接觸,根據(jù)需要向調(diào)用者提供下一個標(biāo)簽或文本等數(shù)據(jù)。
SimpleDOMParser 解析器的核心類,它使用CharCollector類,得到標(biāo)簽、文本等數(shù)據(jù)。使用SimpleElement、SimpleAttr等類存放數(shù)據(jù),生成SimpleDocumnet對象返回給調(diào)用者。
MainFrame 用戶界面類,它將解析結(jié)果展示給用戶,并且根據(jù)用戶的操作,與用戶進(jìn)行交互。
Manager 中間層管理類,它協(xié)調(diào)用戶界面(MainFrame)與解析器內(nèi)核(SimpleDOMParser)之間的關(guān)系,實(shí)現(xiàn)解析器的控制。
內(nèi)部接口設(shè)計(jì)
類名稱 |
調(diào)用類 |
調(diào)用功能 |
SimpleDOMParser |
SimpleElement |
節(jié)點(diǎn)的存儲,查找,刪除。 |
SimpleDOMParser |
SimpleAttr |
屬性節(jié)點(diǎn)的存儲,查找,刪除。 |
SimpleDOMParser |
SimpleDocument |
生成DOM樹 |
SimpleDomParser |
CharCollector |
字符收集,得到標(biāo)簽與文本等。 |
Manager |
SimpleDOMParser |
解析XML文檔 |
Manager |
MainFrame |
用戶界面的相關(guān)操作 |
用例關(guān)系設(shè)計(jì)
用例介紹
用戶: 參與者, 即軟件的使用者。
XML文件: 參與者,XML文件。
鏈接的文件: 參與者,XML文件中鏈接的外部文件。
選擇XML文件: 用戶通過文件選擇框選擇一個本地的XML文件。
選擇URL地址: 用戶輸入一個有效的URL,指向網(wǎng)絡(luò)上的XML格式的網(wǎng)頁。
解析XML文件: 用戶確定對XML文件進(jìn)行解析,該項(xiàng)操作要發(fā)生在選擇XML文件或選擇URL地址之后。
修改文件: 用戶對XML文件進(jìn)行修改
保存文件: 用戶通過文件選擇框,選擇位置保存XML文件。
選擇DOM樹節(jié)點(diǎn):用戶選擇解析后的DOM樹型結(jié)構(gòu)上的節(jié)點(diǎn)。
解析器解析: 解析器對XML進(jìn)行解析
收集字符: 字符收集器負(fù)責(zé)處理XML的字符數(shù)據(jù)
界面展示: 通過樹型結(jié)構(gòu)和圖表向用戶展示數(shù)據(jù)。
字符收集器有限狀態(tài)機(jī)
DFA M=({S,Ts,Tp,Tq,Cp,Ep,Er,Q},{LT,RT,A,C,EC,,EOF,NL,NLRA},f,S,{Q})
其中 字符集:
LT={<}
RT={/>}
A={&,<,>,&apos,&qout}
C={<!CDATA[[}
EC={]]>}
EOF代表文件結(jié)束
NL代表不是<的字符
NLRA 代表除去LT,RT,LTL,A,C的所有字符
狀態(tài):
S: 開始狀態(tài)
Ts:標(biāo)簽處理開始狀態(tài)
Tp:標(biāo)簽處理狀態(tài)
Tq:標(biāo)簽處理結(jié)束狀態(tài)
Cp:CDATA節(jié)點(diǎn)處理狀態(tài)
Ep:內(nèi)建實(shí)體處理狀態(tài)
Er:錯誤狀態(tài)
Q:結(jié)束狀態(tài)
狀態(tài)轉(zhuǎn)換函數(shù):
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) 編輯 收藏 所屬分類: 技術(shù)