結構設計

各個類的功能介紹
Node、Element、Document、Attr為W3C的DOM規范要求實現的接口。還有其它接口未列出。
SimpleNode 繼承Node接口,實現Node接口的基本功能。
SimpleElement繼承Node和Element接口,對應DOM樹中的標準節點,也就是XML文件中的一個標簽。
SimpleDocument 繼承Node和Document接口,對應整個DOM樹,它是解析器解析完成后,返回的對象。用戶可以使用該對象訪問整個DOM樹。
SimpleAttr 繼承Node和Attr接口,對應DOM樹中的屬性節點,用于存放屬性名稱和屬性值。
CharCollector 字符收集器類,它直接與XML文件接觸,根據需要向調用者提供下一個標簽或文本等數據。
SimpleDOMParser 解析器的核心類,它使用CharCollector類,得到標簽、文本等數據。使用SimpleElement、SimpleAttr等類存放數據,生成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={&,<,>,&apos,&qout}
C={<!CDATA[[}
EC={]]>}
EOF代表文件結束
NL代表不是<的字符
NLRA 代表除去LT,RT,LTL,A,C的所有字符
狀態:
S: 開始狀態
Ts:標簽處理開始狀態
Tp:標簽處理狀態
Tq:標簽處理結束狀態
Cp:CDATA節點處理狀態
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
