一种XML解析方法及医疗病案中自定义XML结构表单实现方法技术

技术编号:9143289 阅读:420 留言:0更新日期:2013-09-12 04:50
本发明专利技术涉及数据库技术,具体是一种XML解析方法及医疗病案中自定义XML结构表单实现方法,由XML封装、XML解析两部分构成,XML封装在PC机上根据用户选定的XML节点名称,图形化实现表单字段的选择和属性修改界面,然后系统根据用户选择的字段名称动态生成适合各种医疗病案表单的XML模板,XML解析在Android平台下实现,采用改进的Pull解析方法进行解析。本发明专利技术可根据各种表单的需求字段动态生成合适XML结构模板,并解析出需要的字段,在Android终端上绘制出形式各异的表单样式,提高了开发效率,采用此方案前,项目工程大小大概为8M字节。采用此方案后,项目工程大小为7.06M字节,并且程序的运行效率提高了大概10%。

【技术实现步骤摘要】
一种XML解析方法及医疗病案中自定义XML结构表单实现方法[
]本专利技术涉及数据库技术,具体是一种XML解析方法以及在Android终端上医疗病案中自定义XML结构表单的实现方法,完成了基于医疗病案的自定义XML结构表单的实现,且将形式各异的医疗表单需要的XML结构生成方式和XML解析方式统一化。[
技术介绍
]可扩展标记语言(ExtensibleMarkupLanguage,XML)广泛用在网络服务、数据库和文件处理等领域。XML具有文档内容和结构完全分离、互操作性强、规范统一、支持多种编码和可扩展性好等特点。由于XML文档包括多层嵌套的数据结构,因此XML解析通常会比较复杂。尤其是应用到医疗业务领域,往往因为涉及到医疗业务中大量的数据和表单,如病人的病史、检查、化验的表单等,这些表单种类繁多而且形式各异,表单的内容都是接收后台传送的XML或jason格式的数据,然后通过解析获得,因此不同的表单就对应了不同的XML或jason格式,除此之外每种表单中设计的字段也不是始终不变的,可能会根据实际需求表单的样式会发生改变,这种不确定性对常规XML解析方法的适用时会产生问题。尤其当需要在Android系统终端上实现XML数据解析时,常规XML解析方法有DOM(DocumentObjectModel文档对象模型)方式、SAX(SimpleAPIForXML简易应用程序接口)方式和Android自带的Pull方式。其中DOM解析器是完全加载后才能解析,占用内存较多;SAX占用内存少,解析器可以随时加载随时解析,但却难以回访。Pull解析和SAX类似,不同的是SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,不能控制事件的处理主动结束;而Pull解析器的工作方式为允许应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。三种解析方式各有各自的优点,其中相对来说Pull解析最简单,可根据实际需求选择解析方式。不论何种方式,一般XML数据进行解析时,需要知道被解析的XML数据的各个标签的名称,解析过程中判断解析到的标签名称和已知名称是否相同,如相同取出该标签的内容,采用此种方式的缺点就是不同的XML数据需要编写不同的解析代码,工作量很大;其次,如若将XML划分为相同大小的多个数据块,然后通过多核处理器的多个核同时分别对多个数据块进行并行的解析处理,会使得一个XML元素的内容可能分布在不同的块中,解析程序只能以推测的方式解析这样的数据,此外在并行解析多个数据块时,需要检查各个数据块之间的数据依赖关系,从而导致并解析线程间的频繁通信,当线程等待通信应答时,将暂停运行或减缓处理速度,从而使得并行处理的效果受到影响。[
技术实现思路
]本专利技术的目的是在现有Android终端上自带的关于XML数据的Pull解析方法的基础上进行改进,提供一种不需要知道XML数据的标签名称,而只需要一个通用的XML解析代码就可解析出不同形式的XML数据的方法,以提高XML解析的解析速度,在Android终端上实现医疗业务。为实现上述目的,设计一种XML解析方法,其特征在于所述解析方法的步骤如下:1)解析模块读取调用外接数据库接口Webservice接口,获得返回的XML数据;2)判断读取到的XML节点类型;3)节点处理操作,定义一个节点结构体NodeStruct,包括节点类型nodeType、节点名称nodeName和内容类型contentType三个字符串String类型的私有属性,并新建一个表单容器List用来存放NodeStruct类型的对象,即Lsit<NodeStruct>,在解析过程中每遇到节点类型都新建立一个NodeStruct对象,并根据节点类型分别对三个私有属性进行赋值;4)把新建并已赋好值的NodeStruct对象添加到表单容器List中;5)判断XML数据是否读取完毕,如果判断到了XML结束文档处,执行第6个步骤,否则返回到第1个步骤,继续读取XML数据;6)读取表单容器List中的内容并绘制表单,表单上的字段名称以及表单上字段内容的类型都存在List容器中的NodeStruct对象的私有属性中,读取出表单的字段名称,然后根据具体的表单样式采用代码的形式动态绘制界面。一种用上述XML解析方法实现医疗病案中自定义XML结构表单的实现方法,由XML封装、XML解析两部分构成,所述XML封装方法步骤为:1)XML节点管理模块,从系统数据库中的节点表中获取医疗病案表单中的字段;XML节点管理模块起到管理和维护表单中用到的所有字段的作用;2)把字段的名称和各种属性在pc机上用图形化的方式显示出来;3)用户在pc机的图形界面上选择表单需要的字段名称;4)生成含有用户已选择的字段的XML模板;5)用第四步生成的XML构建外接数据库接口webservice接口;所述XML解析方法步骤为:1)解析模块读取调用外接数据库接口Webservice接口,获得返回的XML数据;2)判断读取到的XML节点类型;3)节点处理操作,定义一个节点结构体NodeStruct,包括节点类型nodeType、节点名称nodeName和内容类型contentType三个字符串String类型的私有属性,并新建一个表单容器List用来存放NodeStruct类型的对象,即Lsit<NodeStruct>,在解析过程中每遇到节点段都新建立一个NodeStruct对象,并根据节点段类型分别对三个私有属性进行赋值;4)把新建并已赋好值的NodeStruct对象添加到表单容器List中;5)判断XML数据是否读取完毕,如果判断到了XML结束文档处,执行第6个步骤,否则返回到第1个步骤,继续读取XML数据;6)读取表单容器List中的内容并绘制表单,表单上的字段名称以及表单上字段内容的类型都存在List容器中的NodeStruct对象的私有属性中,读取出表单的字段名称,然后根据具体的表单样式采用代码的形式动态绘制界面。所述每一个外接数据库接口Webservice接口对应一种表单样式。所述的节点类型分为开始标签、文本标签和结束标签。所述节点段分为开始段、文本段及结束段,所述的赋值操作,当遇到节点开始段时,节点类型nodeType赋值为START,节点名称nodeName赋值为解析得到的标签名称,内容类型contentType赋值为解析属性type得到的内容;遇到节点文本段时,判断文本段是否有内容,若是有则节点类型nodeType赋值为TEXT,节点名称nodeName赋值为解析得到的标签内容,否则不做处理;若是遇到节点结束段时,节点类型nodeType赋值为END,节点名称nodeName赋值为解析得到的标签名称。所述的XML解析在Android平台下实现,编程语言为java。本专利技术提出了一种基于医疗病案的自定义XML结构表单的生成方法,这种方法可根据各种表单的需求字段动态生成合适XML结构模板,并解析出需要的字段,在android终端上绘制出形式各异的表单样式,使用这种方法大大降低了程序员的开发难度,并且提高了开发效率。采用此方案前,项目工程大小大概为8M字节。采用此方案后,项本文档来自技高网
...
一种XML解析方法及医疗病案中自定义XML结构表单实现方法

【技术保护点】
一种XML解析方法,其特征在于所述解析方法的步骤如下:1)解析模块读取调用外接数据库接口Webservice接口,获得返回的XML数据;2)判断读取到的XML节点类型;3)节点处理操作,定义一个节点结构体NodeStruct,包括节点类型nodeType、节点名称nodeName和内容类型contentType三个字符串String类型的私有属性,并新建一个表单容器List用来存放NodeStruct类型的对象,即Lsit,在解析过程中每遇到节点类型都新建立一个NodeStruct对象,并根据节点类型分别对三个私有属性进行赋值;4)把新建并已赋好值的NodeStruct对象添加到表单容器List中;5)判断XML数据是否读取完毕,如果判断到了XML结束文档处,执行第6个步骤,否则返回到第1个步骤,继续读取XML数据;6)读取表单容器List中的内容并绘制表单,表单上的字段名称以及表单上字段内容的类型都存在List容器中的NodeStruct对象的私有属性中,读取出表单的字段名称,然后根据具体的表单样式采用代码的形式动态绘制界面。

【技术特征摘要】
1.一种XML解析方法,其特征在于所述解析方法的步骤如下:1)解析模块读取调用外接数据库接口Webservice接口,获得返回的XML数据;2)判断读取到的XML节点类型;3)节点处理操作,定义一个节点结构体NodeStruct,包括节点类型nodeType、节点名称nodeName和内容类型contentType三个字符串String类型的私有属性,并新建一个表单容器List用来存放NodeStruct类型的对象,即Lsit<NodeStruct>,在解析过程中每遇到节点段都新建立一个NodeStruct对象,并根据节点段类型分别对三个私有属性进行赋值;所述节点段分为开始段、文本段及结束段,所述的赋值操作,当遇到节点开始段时,节点类型nodeType赋值为START,节点名称nodeName赋值为解析得到的标签名称,内容类型contentType赋值为解析属性type得到的内容;遇到节点文本段时,判断文本段是否有内容,若是有则节点类型nodeType赋值为TEXT,节点名称nodeName赋值为解析得到的标签内容,否则不做处理;若是遇到节点结束段时,节点类型nodeType赋值为END,节点名称nodeName赋值为解析得到的标签名称;4)把新建并已赋好值的NodeStruct对象添加到表单容器List中;5)判断XML数据是否读取完毕,如果判断到了XML结束文档处,执行第6个步骤,否则返回到第1个步骤,继续读取XML数据;6)读取表单容器List中的内容并绘制表单,表单上的字段名称以及表单上字段内容的类型都存在List容器中的NodeStruct对象的私有属性中,读取出表单的字段名称,然后根据具体的表单样式采用代码的形式动态绘制界面。2.一种用如权利要求1所述的XML解析方法实现医疗病案中自定义XML结构表单的实现方法,由XML封装、XML解析两部分构成,所述XML封装方法步骤为:1)XML节点管理模块,从系统数据库中的节点表中获取医疗病案表单中的字段;2)把字段的名称和属性在pc机上图形化显示于XML节点管理界面上;3)用户在pc机的图形界面上选择表单需要的字段名称;4)生成含有用户已...

【专利技术属性】
技术研发人员:闵新力柴廷英张余薛君志高珊姬江涛方先臣
申请(专利权)人:上海申腾信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1