结构设计
各个类的功能介绍
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