Rex Mao

分享java技术与生活

XML的DOM解析器的java实现(二) 程序结构设计

 

结构设计

各个类的功能介绍

NodeElementDocumentAttrW3CDOM规范要求实现的接口。还有其它接口未列出。

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 阅读(1415) 评论(1)  编辑  收藏 所属分类: 技术

评论

# re: XML的DOM解析器的java实现(二) 程序结构设计 2008-06-19 18:04 zhujie

我是一名学生,老师让我做xml文档的dom解析,我想也用java实现,你能否共享一下代码,对我毕设帮助很大,非常感谢  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: