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

文档序号:12005824阅读:189来源:国知局
一种XML解析方法及医疗病案中自定义XML结构表单实现方法与流程
一种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字节。采用此方案后,项目工程大小为7.06M字节,并且程序的运行效率提高了大概10%,因此证明此方案是可行的。[附图说明]图1:自定义XML结构表单实现方法的流程框图;图2:XML数据中字符串的封装流程图;图3:XML数据的解析流程图;指定图1为摘要附图。[具体实施方式]现结合附图及具体实施例对本发明的技术方案作进一步阐述,相信对本领域技术人员来说是清楚的。本发明主要由两部分构成如图1所示,PC机上的XML封装操作和Android终端上的XML解析,XML的封装主要是根据用户选定的XML节点名称,动态生成适合各种医疗病案表单的XML结构,XML封装的结构组成图如图2所示;XML解析在Android平台下实现,编程语言为java,采用改进后的Pull解析方法进行。XML封装方法是利用封装模块在PC机上实现,采用C#语言编程,其方法步骤如图2所示:1)医疗系统数据库包括系统数据库和外接的数据库接口两部分,外接数据库接口可以是医院数据库接口或HIS系统的接口等其它医疗系统接口,该接口用来提供医疗病案表单需要的节点名称。在系统数据库内包含节点表,外接的数据库接口中包含字段,系统数据库节点表中的节点名称字段与外接数据库接口中的相关字段相对应的。XML节点管理模块对数据库表单中用到的所有字段起到管理和维护作用,XML节点管理模块从系统数据库中的节点表中获取医疗病案表单中的字段;2)把字段的名称和各种属性在pc机上用图形化的方式显示出来;3)用户在pc机的图形界面上选择表单需要的字段名称;4)生成含有用户已选择的字段的XML模板;5)用第四步生成的XML构建外接数据库接口webservice接口;XML解析,解析模块调用Webservice接口,并对获取到的返回数据进行解析,得到表单的字段名称,然后根据表单样式,动态的用代码进行界面布局,在终端界面上显示出来。解析是在Android系统终端上实现,Android解析XML数据可以采用DOM(DocumentObjectModel文档对象模型)方式、SAX(SimpleAPIForXML简易应用程序接口)方式和Android自带的Pull方式。其中DOM解析器是完全加载后才能解析,占用内存较多;SAX占用内存少,解析器可以随时加载随时解析,但却难以回访。Pull解析和SAX类似,不同的是SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,不能控制事件的处理主动结束;而Pull解析器的工作方式为允许应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。三种解析方式各有各自的优点,其中相对来说Pull解析最简单,可根据实际需求选择解析方式。在这里我们采用Android自带的Pull解析方式。XML解析方法是利用解析模块在Android终端平台上实现的,采用java编程语言,其方法步骤如图3所示:1)解析模块读取调用外接数据库接口Webservice接口,获得返回的XML数据;其中每一个外接数据库接口Webservice接口对应了一种表单样式。2)判断读取到的XML节点类型;所述的节点类型分为开始标签、文本标签和结束标签。以<item>男</item>为例说明,其中<item>为开始标签,<item>标签的内容“男”就是文本标签,</item>为结束标签;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对象的私有属性中,读取出表单的字段名称,然后根据具体的表单样式采用代码的形式动态绘制界面。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1