用于解析二进制数据的方法、系统及计算机产品.pdf

上传人:t**** 文档编号:647252 上传时间:2018-03-01 格式:PDF 页数:26 大小:1.42MB
返回 下载 相关 举报
摘要
申请专利号:

CN200310120684.0

申请日:

2003.12.18

公开号:

CN1509007A

公开日:

2004.06.30

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

H04L12/00; G06F17/30

主分类号:

H04L12/00; G06F17/30

申请人:

GE医疗系统信息技术公司

发明人:

S·L·施拉德尔; R·J·拉费里雷; J·S·钦科塔

地址:

美国威斯康星州

优先权:

2002.12.18 US 10/248097

专利代理机构:

中国专利代理(香港)有限公司

代理人:

程天正;王勇

PDF下载: PDF下载
内容摘要

公开了一种用于解析二进制数据(245)的方法(150、200)。所述方法(150、200)包括接收(165)二进制数据(245)以及解析请求(250),所述解析请求(250)要求非差异解析方法或者要求差异解析方法,调用(170)解析树(235)并接收解析定义(215),以便解析所接收的二进制数据(245),解析(175)二进制数据(245)以便依照解析定义(215)来定义一个值,并且调用(260)数据构造器(265)来管理已解析的值。将所述值插入到已更新的数据树(275)中并将对象(275、300)返回(285、305)给解析请求方(250)。

权利要求书

1: 一种用于解析二进制数据(245)的方法(150、200),包括: 在值解析器(205)处接收(165)二进制数据(245)以及解析请 求(250),所述解析请求(250)要求非差异解析方法或者差异解析 方法中的至少一种方法; 调用(170)解析树(235)并接收解析定义(215),以便解析所 接收的二进制数据(245); 在解析树(235)处解析(175)二进制数据(245),以便依照解 析定义(215)来定义一个值,并且调用(260)数据构造器(265)来 管理已解析的值; 将所述值插入(180)到已更新的数据树(275)中;以及 将对象(275、300)返回(285、305)给解析请求方(250)。
2: 如权利要求1所述的方法(150、200),其中: 所述对非差异解析方法或差异解析方法中的至少一种方法的要求 包括:对非差异解析方法的要求;以及 所述将对象(275、300)返回(285、305)给解析请求方(250) 包括:将已更新的数据树(275)返回(285、305)给解析请求方(250)。
3: 如权利要求1所述的方法(150、200),其中:所述对非差异 解析方法或差异解析方法中的至少一种方法的要求包括:对差异解析 方法的要求,并进一步包括: 在值解析器(205)处将最后知道的数据树(275)存储到存储器 中; 在值解析器(205)处从存储器中检索最后知道的数据树(275); 根据最后知道的数据树(275)创建(295)差异树(300),所述 差异树(300)包含在数据树(275)中的变化;以及 所述将对象(275、300)返回(285、305)给解析请求方(250) 包括:将差异树(300)返回给解析请求方(250)。
4: 一种用于解析医学二进制数据(245)以便经由通信线路进行 传输的方法,包括: 在值解释器(205)处接收(165)二进制数据(245)以及解析请 求(250),所述解析请求(250)要求非差异解析方法或差异解析方 法中的至少一种方法; 在值解析器(205)处将最后知道的数据树(275)存储到存储器 中; 调用(170)解析树(235),并接收解析定义(215)以便解析所 接收的二进制数据(245); 在解析树(235)处解析(175)二进制数据(245),以便依照解 析定义(215)来定义一个值,并调用(175)数据构造器(265)来管 理已解析的值; 将所述值插入(180)到已更新的数据树中; 如果调用了差异解析方法,则在值解析器(205)处从存储器中检 索最后知道的数据树(275); 如果调用了差异解析方法,则将已更新的数据树(275)与最后知 道的数据树(275)相比较; 如果调用了差异解析方法,则创建(295)差异树(300),所述 差异树(300)包含从最后知道的数据树(275)到已更新的数据树(275) 的变化;以及 将已更新的数据树(275)或差异树(300)中的至少一棵树返回 (185)给解析请求方(250)。
5: 一种用于解析二进制数据(245)的系统(100),包括: 与网络(120)进行通信的医院计算机系统(100),所述医院计 算机系统(110)包括如下软件,该软件用于实现解析医学二进制数据 (245)以便经由通信线路进行传输的方法(150、200),所述方法(150、 200)包括: 在值解析器(205)处接收(165)二进制数据(245)以及解析请 求(250),所述解析请求(250)要求非差异解析方法或者差异解析 方法中的至少一种方法; 在值解析器(205)处将最后知道的数据树(275)存储到存储器 中; 调用(170)解析树(235),并接收解析定义(215)以便解析所 接收的二进制数据(245); 在解析树(235)处解析(175)二进制数据(245),以便依照解 析定义(215)来定义一个值,并调用(260)数据构造器(265)来管 理已解析的值; 将所述值插入(180)到已更新的数据树(275)中; 如果调用了差异解析方法,则在值解析器(205)处从存储器中检 索最后知道的数据树(275); 如果调用了差异解析方法,则将已更新的数据树与最后知道的数据 树(275)进行比较(290); 如果调用了差异解析方法,则创建(295)差异树(300),所述 差异树(300)包含从最后知道的数据树(275)到已更新的数据树的 变化;以及 将已更新的数据树(275)或差异树(300)中的至少一棵树返回 (185)给解析请求方(250)。
6: 如权利要求5所述的系统(100),进一步包括: 网络(120),并且 所述医院计算机系统(110)与所述网络(120)相通信。
7: 如权利要求5所述的系统(100),其中: 所述插入(180)值进一步包括:将该值插入到没有嵌入式协议信 息的已更新的数据树(275)中;以及 所述创建(295)差异树(300)进一步包括:创建(295)没有嵌 入式协议信息的差异树(300)。
8: 如权利要求7所述的系统(100),进一步包括: 网络(120),并且 所述医院计算机系统(110)与所述网络(120)相通信。
9: 一种用于解析二进制数据(245)的方法(200),包括: 通过读取解析定义文件(215)来初始化(210)值解析器(205), 并创建代表解析定义(215)的解析树(235); 在值解析器(205)以及解析树(235)处接收(240)所输入的二 进制数据(245),所述二进制数据(245)具有原始数据元素或者非 原始数据元素中的至少一种数据元素; 响应原始数据元素而调用(260)数据构造器(265),并在原始 解析节点将所述原始数据元素插入到数据树(275)中; 响应非原始数据元素而调用(260)数据构造器(265),并在非 原始解析节点将非原始数据元素插入到数据树(275)中;以及 建立并返回(285、305)非差异数据树(275)或者差异树(300) 中的至少一棵树。
10: 一种用于解析二进制数据(245)的计算机程序产品,所述产 品包括: 处理电路可读的存储介质,用于存储可由处理电路执行的指令,用 于: 在值解释器(205)处接收(240)二进制数据(245)以及解 析请求(250),所述解析请求(250)要求非差异解析方法或差异解 析方法中的至少一种方法; 在值解析器(205)处将最后知道的数据树(275)存储到存 储器中; 调用(170)解析树(235),并接收解析定义(215)以便解 析所接收的二进制数据(245); 在解析树(235)解析(175)二进制数据(245),以便依照 解析定义(215)来定义一个值,并调用(260)数据构造器(265)来 管理已解析的值; 将所述值插入(180)到已更新的数据树(275)中; 如果调用了差异解析方法,则在值解析器(205)处从存储器 中检索最后知道的数据树(275); 如果调用了差异解析方法,则将已更新的数据树与最后知道 的数据树(275)进行比较(290); 如果调用了差异解析方法,则创建(295)差异树(300), 所述差异树(300)包含从最后知道的数据树(275)到已更新的数据 树的变化;以及 将已更新的数据树(275)或差异树(300)中的至少一棵树 返回(285、305)给解析请求方(250)。

说明书


用于解析二进制数据的方法、系统及计算机产品

    【技术领域】

    本公开内容总体上涉及一种用于解析数据的方法;尤其涉及一种用于解析二进制数据的方法。

    背景技术

    医院通常利用计算机系统来管理医院内部的不同部门。关于每位患者的数据由各种各样的计算机系统来收集。例如,可让患者进入医院以便监控生命信号。关于患者的信息(例如,人口分布及保险)可以由医院信息系统(HIS)获得,并且存储在患者记录上。然后,可以将这个信息传送到特定的部门信息系统(DIS)。通常,所述DIS是某一家公司的产品,而所述HIS是另一家公司的产品。结果,这两者间的数据库会不同。此外,他们将捕获/保持并且发送数据中的不同粒度级。所述DIS一经收到患者信息,就可安排该患者以便进行参数研究(参数研究的参数是一组生命信号)。接下来,由临床医师进行参数研究。获取图像及测量数据并且发送给DIS服务器。读数医师(例如,医学专家)在检查台坐下,并且作出患者的参数研究。然后,医学专家开始重新检查图像及测量数据,并且在研究的基础上创建完整的医学报告。然后,可以将该医学报告编码为结构化报告(SR)文档,该结构化报告文档包括描述报告内容的临床数据代码。当医学专家完成医学报告时,将该报告发送给DIS服务器,在该DIS服务器中存储该报告,并且通过患者标识数据将该报告与该患者相关联。所完成的带有临床数据代码的医学报告是如下类型报告的一个例子,所述报告可以作为二进制数据流、经由网络被发送到数据储存库中。

    典型来讲,这些二进制数据结构包含如下数据值,该数据值定义如何解释在数据流中所伴随着的二进制子结构。而那些二进制子结构又可以包含附加类型的字段,该附加类型字段定义它们内部更进一步的子结构。随着过程继续,形成了一组分层结构,庞大而复杂的数据结构会演化,这导致了低带宽通信线路之上的低速数据传输。

    【发明内容】

    在一个实施例中,一种用于解析二进制数据的方法,包括:接收二进制数据以及解析请求,所述解析请求要求非差分解析方法或者要求差分解析方法,调用解析树并且接收解析定义来解析二进制数据,解析二进制数据以便依照解析定义来定义一个值,调用数据构造器来管理已解析的值,将所述值插入到数据树中,并将一个对象返回给解析请求方。

    在另一个实施例中,一种用于解析医学二进制数据以便经由通信线路进行传输的方法,包括:接收二进制数据以及解析请求,解析请求要求非差分解析方法或者要求差分解析方法,将一个最后知道地数据树存储在存储器中,调用解析树并接收解析定义来解析二进制数据,解析二进制数据以便依照解析定义来定义一个值,调用数据构造器来管理已解析的值,将所述值插入到已更新的数据树中,如果调用了差分解析方法,则从存储器中检索所述最后知道的数据树,如果调用了差分解析方法,则将已更新的数据树与最后知道的数据树进行比较,如果调用了差分解析方法,则创建包含从最后知道的数据树到已更新的数据树的变化的差异树,并将已更新的数据树或差异树返回给解析请求方。

    在另外的实施例中,一种用于解析二进制数据的系统,包括:医院计算机系统,所述医院计算机系统包括如下软件,该软件用于实现解析医学二进制数据以便经由通信线路进行传输的方法。所述医院计算机系统与网络相通信,并且所述软件包括用于接收二进制数据以及解析请求的指令,所述解析请求要求非差分解析方法或者要求差分解析方法,将最后知道的数据树存储在存储器中,调用解析树并接收解析定义以便解析二进制数据,解析二进制数据以便依照解析定义来定义一个值,并调用数据构造器来管理已解析的值,将所述值插入到已更新的数据树中,如果调用了差分解析方法,则从存储器中检索最后知道的数据树,如果调用了差分解析方法,则将已更新的数据树与最后知道的数据树进行比较,如果调用了差分解析方法,则创建包含从最后知道的数据树到已更新的数据树的变化的差异树,并将已更新的数据树或差异树返回给解析请求方。

    在另一个实施例中,一种用于解析二进制数据的方法,包括:通过读取解析定义文件来初始化一个值解析器,并创建代表解析定义的解析树,接收具有原始数据元素或者非原始数据元素的二进制数据输入,响应原始数据元素来调用数据构造器,并在原始解析节点将所述原始数据元素插入到数据树中,响应非原始数据元素来调用数据构造器,并在非原始解析节点将非原始数据元素插入到数据树中,并且建立以及返回无差异数据树或者差异树。

    在另一个实施例中,一种用于解析二进制数据的计算机程序产品,包括:处理电路可读的存储介质,用于存储可由用来接收二进制数据以及解析请求的处理电路执行的指令,所述解析请求要求非差分解析方法或者要求差分解析方法,将最后知道的数据树存储在存储器中,调用解析树并接收解析定义以便解析所接收的二进制数据,解析二进制数据以便依照解析定义来定义一个值,并调用数据构造器来管理已解析的值,将所述值插入到已更新的数据树中,如果调用了差分解析方法,则从存储器中检索最后知道的数据树,如果调用了差分解析方法,则将已更新的数据树与最后知道的数据树进行比较,如果调用了差分解析方法,则创建包含从最后知道的数据树到已更新的数据树的变化的差异树,将已更新的数据树或差异树返回给解析请求方。

    【附图说明】

    参考示例性附图,其中相同的部件编制了相同的标号,在几个附图中:

    图1是用于解析医学二进制数据的示范性系统;

    图2是用于在图1的系统上解析医学二进制数据的示范性过程流程图;

    图3是用于在图1的系统上解析医学二进制数据的示范性过程框图;

    图4是依照本发明实施例的用于构建解析树的示范性过程图;

    图5是依照本发明实施例初始化过程的示范性框图;

    图6是依照本发明实施例的运行时过程的示范性框图;

    图7是依照本发明的用于解析所述解析树节点的示范性过程框图;以及

    图8是用于本发明实施例的二进制序列的示范性说明。

    【具体实施方式】

    本发明的实施例提供了用于解析医学二进制数据结构的基础设施和过程,其用于经计算机网络来传送与患者有关的原始数据,或者更新医疗设备接口以及驱动器。图1是用于解析医学二进制数据的示范性系统。位于不同医院的医院计算机系统110与网络120相连接。医院计算机系统110将医学数据发送到主机系统130,所述主机系统130包括位于主机存储设备132上的数据储存库,还包括主机计算机134。医院计算机系统110典型地包括:应用软件,用于执行已编码的医学报告,并且该医院计算机系统110还包括用于连接一个或多个医院存储设备112的网络,所述医院存储器设备112用于存储已编码的医学数据。此外,医院计算机系统110包括应用软件,用于将以二进制数据结构安排的医学数据解析为适当的格式,以便在通信线路上易于传输,并且如此进行操作而不必包括嵌入在数据流内的协议信息,借此能够经由现存通信线路来进行压缩式通信,所述通信线路可以具有低带宽,而不需要线路升级。将包括解析树以及数据树的已解析数据对象存储在主机存储设备132上,以便交叉访问多个医院计算机系统110。

    总体上讲,解析树是这样一种信息树,其表示正被读入的二进制数据的结构并且包含解析节点层次(树叶和分支)。当接收二进制数据时,所述解析树由值解析器存储,并在运行时被重复调用。数据树是这样一种信息树,其表示所接收二进制数据的解析的数据值,具有适于程序处理的层次形式。数据构造器是一软件类,其构建数据树并定义所述数据树将具有的格式。下面描述的图3描绘了用于解析医学二进制数据的示范性方法。

    图1的系统100包括一个或多个用户系统140,通过所述用户系统140,终端用户或消费者可以对主机计算机134上的应用程序作出请求,以访问在位于主机存储设备132上的数据储存库中所存储的特定信息。在示范性的实施例中,主机计算机134执行提供对包含于数据储存库中的数据进行访问的程序,其中所述数据储存库位于主机存储设备132上。用户系统140可以直接与主机计算机134相连接,或者它们能够经由网络120与主机计算机134相耦合。每个用户系统140都可以利用通用计算机来实现,其中所述通用计算机执行计算机程序,以实施在此所描述的过程。用户系统140可以是个人计算机或是附加有终端的主机。如果用户系统140是个人计算机,那么在此所描述的处理可以通过将小应用程序提供给用户系统140来由用户系统140及主机计算机134、加以共享。

    网络120可以是任何类型的公知网络,包括局域网(LAN)、广域网(WAN)、内联网、全球网络(例如,因特网)。用户系统140可以经由多种网络(例如,内联网以及因特网)与主机计算机134相耦合,以至于不必要求所有用户系统140都经由同一网络与主机计算机134相耦合。一个或多个用户系统140以及主机计算机134能够以无线方式与网络120相连接,并且网络120可以是无线网络。在一示范性实施例中,网络120是因特网,且每个用户系统140执行用户接口应用程序以直接与主机计算机134相连接。在另一个实施例中,用户系统140可执行web浏览器,以便经网络120与主机计算机134联系。作为选择,可以利用主要被编程以用来访问网络120的设备来实现所述用户系统140。

    主机计算机134可以使用响应计算机程序而进行操作的服务器来实现,其中所述计算机程序存储在能够由服务器访问的存储介质中。主机计算机134可以作为网络服务器(通常称为web服务器)来操作,以便与用户系统140进行通信。主机计算机134将信息发送到用户系统140以及医院计算机系统110,并从用户系统140以及医院计算机系统110那里接收信息,并且所述主机计算机134能够执行相关联的任务。主机计算机134还可包括防火墙,以便防止对主机计算机134的未经授权的访问,并且用于对已授权的访问强制任意的限制。例如,管理员可以有权访问整个系统,并有权修改部分系统,而消费者仅仅可以有权浏览用于特定产品的数据储存库记录的子集。在一示范性实施例中,管理员有能力添加新用户,删除用户以及编辑用户优先权。正如本领域所公知的,所述防火墙可以使用常规的硬件和/或软件来实现。

    主机计算机134还作为应用程序服务器来操作。主机计算机134执行用于提供对位于主机存储设备132上的数据储存库进行访问的一个或多个应用程序,以及执行用于解析医学二进制数据和为医学信息的有效传送而构建解析树及数据树的应用程序。可以通过将应用程序(例如,java小应用程序)提供给用户系统140来由用户系统140和主机计算机134共享所述处理。作为选择,用户系统140可以包括用于执行在此所述的部分处理的独立软件应用程序。同样地,可以通过将应用程序提供给医院计算机系统110来由医院计算机系统110和主机计算机134共享所述处理,并且作为选择,医院计算机系统110可包括用于执行在此所述的部分处理的单独软件应用程序。应该理解的是,可以使用相互独立的服务器来实现网络服务器的功能以及应用程序服务器功能。作为选择,所述网络服务器、防火墙以及应用程序服务器可以通过单个服务器来实现,所述单个服务器执行计算机程序来执行必要的功能。

    主机存储设备132可以使用用于存储电子信息的多种设备来实现,所述设备诸如是诸如文件传输协议(FTP)服务器。应该理解的是,主机存储设备132可以使用包含在主机计算机134中的存储器来实现,或者所述主机存储设备132可以是单独的物理设备。主机存储设备132包含各种信息,所述各种信息包括含有来自于一家或多家医院的、使用通用格式(例如,使用相同的临床代码)的医学报告的数据储存库,以及描述所述通用格式及数据库设计的模式。主机计算机134还可作为数据库服务器进行操作,并且协调对存储在主机存储设备132上的应用程序数据的访问。可将所述数据储存库物理地存储为单个数据库,所述单个数据库带有基于用户特征的受限访问,或者可以将所述数据储存库物理地存储在各种数据库中,所述各种数据库包括用户系统140或者主机计算机134上的部分数据库。在一示范性实施例中,数据储存库使用关系数据库系统来实现,并且所述数据库系统根据消费者的特征、向不同消费者提供不同数据视图。

    在本发明的示范性实施例中,将使用不同知识库编码的医学数据转换为通用/规范的表示法。医院以及门诊医师使用用于生成临床报告的工具,所述临床报告描述了患者就诊的结果。这些工具使用临床代码来代表临床术语,并且所述临床代码从一种工具到另一种工具可以是不同的,并且从一家医院到另一家医院也可以是不同的。此外,用于存储临床数据的结构化报告(SR)对象的类型、从一种工具到另一种工具是不同的,并且从一家医院到另一家医院也是不同的。可以利用本发明的示范性实施例,将已改变的临床报告解析为压缩的表示法(例如,与特定患者相关的已更新生命信号)。这可以提供将已更新的患者数据经由传输线路快速地传输到不同诊所以及医院的能力,以便使诸如门诊医师以及医生之类的顾客可以及时利用。

    现在参考图2,该图描述了用于解析二进制数据的示范性过程150的总过程流程图,其中所述过程150包括初始化151以及运行时152阶段。下面论述的图3以更加详细的框图形式描述了过程150。

    在框155处开始,过程150启动值解析器以及解析定义文件之间的通信,值解析器存在于解析定义文件被解析的地方。

    在框160处,在值解析器处理器处构建解析树,值解析器处理器将在下面参考图4更加详细的论述。

    在框165处,在值解析器处接收二进制数据以及解析请求,所述解析请求要求非差分解析方法或者要求差分解析方法。

    在框170处,调用解析树,并且为解析所述二进制数据作准备而接收解析定义。

    在框175处,在解析树处解析二进制数据,借此依照解析定义来定义一个值。调用数据构造器来管理已解析的值,并且构建数据树。

    在框180处,将已解析的值插入到数据树,借此更新数据树。

    在框185处,将诸如已更新的数据树或差异树之类的对象,将在下面更加详细的论述,返回给解析请求方。

    图3描述了用于解析二进制数据的示范性过程200的框图,其中所述过程200包括初始化以及运行时阶段,其中,运行时阶段包括非差分以及差分解析方法,正如将要在下面更加详细论述的一样。

    过程200以初始化过程开始,其中值解析器205启动与解析定义文件215之间的通信210,以便读取解析配置。值解析器205使用该信息来与值解析器处理器225以及数据构造器265进行通信,目标是创建用于解析二进制数据245的解析树235。值解析器是一软件类,该软件类实现用于将二进制数据解析为数据值的数据解析算法。示范性的解析定义文件是XML模式,然而,不需要将解析规则表示成XML模式,而是能够以本领域所公知的任何方式来描述。XML模式是一种文件格式,该种文件格式描述XML文件的允许元素、属性以及值,并且可以由验证解析器来使用,以便验证XML输入的正确性。XML模式允许更高程度地控制XML数据的格式。在一示范性实施例中,以XML进行方案定义。在定义文件215中的解析定义,是定义如何解析二进制输入数据流的一种XML。值解析器处理机是一软件类,该软件类将解析定义文件中的XML元素映射到解析树中的节点。

    值解析器205通过将SAX回调发送220到值解析器处理器225来使用SAX,以便解析定义文件215中的解析定义,其中所述SAX是一种允许程序来解释XML、用于XML的简单应用程序接口的。在接收SAX回调时,值解析器处理器225构建230解析树235,所述解析树总体上讲是嵌套解析节点的集合,该集合定义待读入的二进制数据的格式,并且所述解析树一经创建,就被值解析器205存储在存储器中,并且为所调用的每个解析方法而被重复使用。解析节点是解析树中的单个元素,并且可以是以下两种类型之一,所述两种类型为:原始型或容器型。原始解析节点代表“原始”值,诸如整数、字符串、逻辑字符串或任意其他本地Java类型的数据,并且所述原始解析节点始终是解析树的“叶子”。容器节点包含其他解析节点,并且例如用于分组、迭代以及条件切换等。解析树的构建将在下面参考图4更加详细的论述。

    一旦值解析器205读入全部XML解析定义,解析树235就准备解析数据。

    上述过程,即步骤210、220、230描述了初始化阶段,所述初始化阶段根据解析定义来创建解析树。接下来的过程将描述运行时阶段,所述运行阶段使用解析树来解析依照解析请求接收的二进制数据。

    在运行时,值解析器205接收240二进制数据245以及解析请求250。在解析请求250中包括的是对非差分解析或差分解析的要求,这部分内容将在下面更加详细的描述,然而,总体上讲,非差分解析将信息的全部(已更新)的数据树返回给在250处的解析请求方,而差分解析则返回差异树,所述差异树仅包含自从保存了最后知道的数据集以来已改变的信息。

    当刚一接收了240二进制数据245以及解析请求250时,值解析器205就调用255解析树235来解析二进制数据245,其中所述解析树235是依照上面的论述来创建的。

    在解析树235处对二进制数据245的解析,依照所接收的解析定义215来执行,并且从解析树的根开始。解析请求250的接收启动了一组递归调用,解析树235中的每个相关解析节点调用关于其所有孩子的解析请求,直到找到原始解析节点为止。当找到原始解析节点时,调用get-value方法,以便定义并解析来自数据流中当前位置的、用以分配到该解析节点的值。

    对于从数据流中读出的每个元素来说,在数据构造器265处,解析树235调用260insert-value方法,所述数据构造器265又通过管理并将已解析的值插入数据树275来构建270数据树275。解析定义的元素描述了数据树内、二进制流中一段已知数据,而值是在元素处理之后作为结果得到的数值。当新的一段数据从二进制数据流之中被解析时,经由值解析器处理器225和解析树235,在数据构造器265处接收来自于值解析器205的回调。

    在已经读取了所有的数据之后,值解析器205调用280数据树275,以便使得值解析器205,在将数据树275(返回给解析请求方的一种对象类型)返回285给解析请求方250之前(在解析请求方250中最初调用过非差分解析),或者在调用290差分方法之前(在解析请求方250中最初调用过差分解析),能够执行对其数据的任何附加处理。

    如果调用了差分解析,那么值解析器205就将从其高速缓冲存储器中检索最后知道的的数据树,其中所述最后知道的的数据树先前已在首次创建时被存储了,并执行最后知道的数据树和新(已更新)数据树之间的比较分析,并仅仅将差异传送到差异树300,所述差异树300将只包含自从保存最后知道的数据树以来已改变的信息。

    在创建差异树300之后,将差异树300(返回给解析请求方的另一种对象类型)返回305给位于250处的解析调用方。

    现在参考图4,该图描述了用于构建解析树235的过程,当值解析器处理器225接收到来自于值解析器205的回调220之后,值解析器处理器225构建解析树235,其中所述值解析器205包含二进制数据流内的起始元素和结束元素。解析定义的起始元素和结束元素根据各种参数来描述数据流中的相关联数据,所述参数诸如是起始元素的地址、局部名(XML的局部名是减去所有名字空间考虑的元素名)、限定名和属性,以及结束元素的地址、局部名和限定名。当在值解析器205处刚一接收到解析请求时,值解析器205就解析所述解析定义文件215以读入解析变量,并且将包含解析变量的回调发送220给值解析器处理器225。

    值解析器处理器225读取由值解析器205传送的XML元素,并且如果所述元素是起始元素,那么确定350解析树堆栈355是否为空。

    如果堆栈355为空,那么值解析器处理器225创建360解析树根节点,并且将新创建的节点压入到385解析树235上。解析树根节点还称为数据树根节点,并且它处于所述树中的如下位置,在该位置值解析器205将开始处理二进制数据245。

    如果堆栈355不为空,那么值解析器处理器225就通过搜索365堆栈355来识别相关联的亲代解析节点,然后试图将XML元素名与一组已知元素名进行匹配,所述已知元素名在值解析器205处被存储在值解析器标记文件中。然后在值解析器205处,将每个已知元素名映射到特定的解析树节点。如果找到匹配的元素名,那么值解析器处理器225就创建370标准解析树节点,将标准节点添加375到以亲代解析节点开始的解析树235,将已知元素映射到标准节点,并且将标准节点压入到385解析树235的当前级上。如果没有找到匹配的元素名,那么值解析器处理器225就通过get-extension-node方法来创建380自定义解析树节点,将自定义节点添加375到在亲代解析节点处开始的解析树235,将不匹配元素映射到自定义节点,并且将自定义节点压入到385解析树235的当前级上。

    继续创建和向解析树235添加节点的过程,直到在值解析器205遇到结束元素为止。结束元素表示该特定二进制数据结构的解析树的完成。

    从更加概括的观点来看,并且现在参考图5和6,通过读取210XML解析定义文件215来初始化值解析器205,从而构建230解析树235,所述解析树235代表解析定义并且由解析定义来定义。解析定义文件215指定二进制数据245的格式,所述二进制数据245将由值解析器205接收并处理。在运行时,解析树235接收包含原始以及非原始数据元素的二进制数据245。当从二进制流读取原始数据元素时,解析树235调用260数据构造器265,以便在原始解析节点将数据元素插入到270数据树275中。当从二进制流读取非原始数据元素时,解析树235调用260数据构造器265,以便在非原始解析节点将数据元素插入到270数据树275。数据树是值解析器系统的产物,它代表有意义数据结构中的二进制数据。应用差分逻辑以及转换技术,XML可以进一步处理该树。将作为结果而得到的数据树或差异树返回给解析请求方。

    在图7中描述了用于解析一个解析树节点的详细过程400,所述过程400从方法入口405开始,并且进入到框410,在框410处寻找孩子节点。在框415处,如果出现更多的孩子节点,则对所述孩子节点进行迭代。如果框415为真,则确定420所述节点是否是容器节点。如果框420为真,则解析425所述孩子容器节点。在框425之后,过程逻辑进入框430,在框430处,更新已解析节点的运行总索引。如果框420为假,则确定435是否设定“跳过”属性,其中所述跳过属性用于跳过将不被解释的二进制数据。如果框435为真,则过程逻辑进入框430。如果框435为假,则过程逻辑进入框440,在框440处,经由getValue算法来确定孩子节点的值。在框440之后,过程逻辑进入框445,在框445处确定所述孩子是否是可切换的。当可切换的节点被接通时,其定义待匹配的值,也就是说,将可切换设定为真。如果是可切换的,则将节点的值临时存储在存储器中,以供配置文件或数据树275后续引用。如果框445为真,则将框440的值插入450到运行时高速缓存器中。在框450之后,或者如果框445为假,那么过程逻辑进入框455,在框455处确定是否设定跳过属性。如果框455为真,则确定460是否设定“不前进”属性,这导致读索引不前进。对于从数据流中读出的指定值来说,读取该值,但是读指针不前进。不前进属性通常与位字段元素内部的原始元素一起使用(即,位字段是应该一起考虑的一组字节),以便阻止读指针的前进。如果框455为假,则过程逻辑进入框465,在框465处,调用数据构造器265以便将来自于框440的值插入到数据树275中。

    如果框460为真,则过程逻辑进入框415。如果框460为假,则过程逻辑进入框430。在框430之后,过程逻辑进入框415。如果框415为假,则过程逻辑进入框470,在框470处,确定返回索引的大小。如果运行总和将被返回(此处没有设定“不前进”属性),那么过程逻辑进入框475,在框475处,返回用于返回索引的运行总和。如果已定义大小的前进度将被返回(此处设定了“不前进”属性),那么过程逻辑进入框480,在框480处,返回索引的已定义大小被返回。在框475和480之后,过程逻辑进入框485,在框485处过程400退出。

    下面利用用于通过趋势来处理目录请求响应的简单例子,来描述用于值解析的示范性过程。该过程总体上讲遵循图3中提及的上述过程。

    在开始时,用户识别需要加以解析的数据245的二进制格式,并且如果数据245性质上是分段式,则用户识别各段。如果数据总是以通用首部段或者协议标识符开始的话,则执行段识别。例如,ETFTP趋势响应总是以“Bed Message”结构(最通用的统一I代码)开始,后面跟随有ETFTP请求结构(在作出ETFTP请求的代码中通用),接着跟随有趋势数据本身。将这些离散的段分成独立的XML文件,并且主解析定义使用实体引用来参考它们。实体引用是XML文件内的引用,其用作到另一个XML文件的链接。

    然后,用户识别二进制数据格式是否重复,或者是否在流中具有未来的段,所述未来段依据先前读入的值而定。在这种情形中,响应格式具有三个主要的段:

    a.“ETFTPRequest”首部(36字节)(参见示例代码1),其在所有ETFTP请求中是通用的,

    b.“DataTrendMenu”块(7字节)(参见示例代码1),以及

    c.“TrendEntry”块(参见示例代码1),包括许多6字节条目,均代表趋势条目,它是用于在指定名称的基础上将元素聚合成组的组别。

    二进制趋势目录响应的例子与图8中描述的二进制序列相似。

    接下来,用户创建解析定义文件215。在二进制数据是部分的情况下,将解析定义文件定义为段,并且使用外部引用来将所述段“粘合”在一起。示例代码1中描述了解析定义XML文件。在示例代码1中,在示范性文件中,只有值解析器标记对于趋势条目来说是特定的标记,并且当SAX解析器在该文件读取时,该解析器将解析实体引用。在示例代码2中描述了已解析的XML文件。当解析了所有外部引用时,通过将XML文件拖入web浏览器(诸如Internet ExplorerTM5.0或更高版本)来执行上述动作以便浏览,就能够读取解析定义。

                          示例代码1

    示例代码2

    然后,用户创建数据构造器265,当所述数据构造器正处理二进制数据245时,它接收来自于解析树235的回调。数据构造器265以用户希望的任意方式来构建数据树275。该树275继而能够用来支持作为数据被传送到其他方法或者被转换成其他格式(诸如XML)以便传输的差分。图8的示范性二进制流的示范性数据构造器265是“com.ge.med.rsvp.server.rsvpserver.unity.trend.TrendDirBuilder”类。当读取数据值时,解析树235将调用该类上的插入值260方法。数据构造器265构建“com.ge.med.rsvp.server.rsvpserver.tend.TrendDirectory”对象作为其数据对象(数据树275)。

    在运行时,当接收数据245时,数据汇集类调用值解析器205。数据汇集类是从诸如网络或文件的源接收数据的类。所述数据汇集类调用值解析器205来解析所接收的数据,并且将数据树275转送到请求方。然后将已返回的数据树275传送给需要它的任何一方。举例来说,诸如“com.ge.med.rsvp.server.rsvpserver.unity.trend.UnityTrendDirBuilder”之类的趋势控制器,调用具有根据其ETFTP请求接收的数据的值解析器205。将所返回的TrendDirectory对象作为getDirectory过程调用的结果进行传送。

    应该紧记的是,二进制流格式以及解析树语法可自由地随着解析算法而改变,并且因为二进制流不是被硬编码的,所以其可以利用新的XML解析文件来改变。本发明实施例的特征正是所述结构和动态处理,而不是实际输入/输出流。

    使用解析定义文件就不必使用长“case-类型”语句切换到数据元素来实现二进制处理代码。相反,值解析器系统构建用于数据的解析树,这对于所接收的每个二进制数据集被重复地调用。由此,外部处理代码仅需要处理来自解析器的数据树。由于解析定义以XML编写,因此可以将实体引用用于外部XML文件,以便与整个定义拼合在一起,这使得通用处理块在不同解析定义中能被共享。该方法可以在由类型特定信息跟随着通用首部这样一种协议中加以使用,并且尤其可以用于医学二进制数据的解析和分布,而不必将协议信息嵌入系统体系结构中。为经由通信线路传输医学二进制数据而利用解析树以及差异树,能够进行医学二进制数据的有效编码、压缩以及传输,其中所述通信线路可以是低带宽线路。

    解析定义文件以及解析树的实现,还避免了向二进制数据提供位屏蔽的需要,或者避免了在代码中使用嵌套case语句的需要,这样,在为不同应用程序重新解释原始数据时,还避免了重新编译以及重分布软件的需要。

    如上所述,本发明的实施例可以依照计算机实现过程的形式以及用于实施那些过程的设备来实施。本发明的实施例还可以依照计算机程序代码的形式来实施,所述程序代码包含收录在有形介质中的指令,所述有形介质诸如是软盘、CD-ROM、硬盘驱动器或其他任何计算机可读存储介质,其中,当将计算机程序代码载入计算机并由计算机执行时,计算机成为用于实施本发明的设备。本发明的实施例还可以依照计算机程序代码的形式来实施,例如,所述程序代码无论存储在存储介质上,载入和/或由计算机执行,还是经由某些传输介质传输,诸如经由电线或电缆,经由光纤,或者经由电磁辐射,其中,当将计算机程序代码载入并由计算机执行时,计算机就成为用于实施本发明的设备。当在通用微处理器上实现时,计算机程序代码段配置微处理器以创建特定的逻辑电路。

    虽然已经参考示范性实施例描述了本发明,但是本领域技术人员应该理解的是,在不背离本发明范围的情况下,可以对本发明作出各种变化并且各种等价物可以适用于其元件。此外,不脱离本发明的实质范围的情况下,还可以作出许多修改以采用特殊形式或材料来教导本发明。因此,应该意识到,本发明不限于作为期望实施此发明的最佳模式所公开的具体实施例,而是包括落入所附权利要求书的范围内的所有实施例。此外,使用术语第一、第二等不表示任何次序或重要性,而是使用术语第一、第二等来区分某一元件与其他元件。

用于解析二进制数据的方法、系统及计算机产品.pdf_第1页
第1页 / 共26页
用于解析二进制数据的方法、系统及计算机产品.pdf_第2页
第2页 / 共26页
用于解析二进制数据的方法、系统及计算机产品.pdf_第3页
第3页 / 共26页
点击查看更多>>
资源描述

《用于解析二进制数据的方法、系统及计算机产品.pdf》由会员分享,可在线阅读,更多相关《用于解析二进制数据的方法、系统及计算机产品.pdf(26页珍藏版)》请在专利查询网上搜索。

公开了一种用于解析二进制数据(245)的方法(150、200)。所述方法(150、200)包括接收(165)二进制数据(245)以及解析请求(250),所述解析请求(250)要求非差异解析方法或者要求差异解析方法,调用(170)解析树(235)并接收解析定义(215),以便解析所接收的二进制数据(245),解析(175)二进制数据(245)以便依照解析定义(215)来定义一个值,并且调用(260)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1