CN102650992B - 用于二进制xml数据的生成及其节点定位的方法和装置 - Google Patents

用于二进制xml数据的生成及其节点定位的方法和装置 Download PDF

Info

Publication number
CN102650992B
CN102650992B CN201110045815.8A CN201110045815A CN102650992B CN 102650992 B CN102650992 B CN 102650992B CN 201110045815 A CN201110045815 A CN 201110045815A CN 102650992 B CN102650992 B CN 102650992B
Authority
CN
China
Prior art keywords
node
mark
nsd
fcd
xml data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201110045815.8A
Other languages
English (en)
Other versions
CN102650992A (zh
Inventor
刘长生
高小明
P·哈格
B·V·D·林登
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201110045815.8A priority Critical patent/CN102650992B/zh
Priority to US13/402,162 priority patent/US8838642B2/en
Publication of CN102650992A publication Critical patent/CN102650992A/zh
Application granted granted Critical
Publication of CN102650992B publication Critical patent/CN102650992B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8373Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明涉及可扩展标记语言(XML)数据处理技术领域。更具体地,本发明涉及对二进制XML数据的生成及查询进行改进的技术。本发明提供了一种用于生成二进制XML数据的方法,包括:获取XML数据源;针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识;以及利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述FCD标识和NSD标识。同时,本发明还提供了一种用于定位二进制XML数据中的节点的方法,所述二进制XML数据中包含首子距FCD标识和邻弟距NSD标识,包括:接收查询二进制XML数据中的节点的请求;获取该请求的查询路径;以及利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点。

Description

用于二进制XML数据的生成及其节点定位的方法和装置
技术领域
本发明涉及可扩展标记语言(XML)数据处理技术领域。更具体地,本发明涉及对二进制XML数据的生成及查询进行改进的技术。
背景技术
XML是一种良好的数据描述语言,具有强大的数据描述能力,同时具备自描述的特征,使得人和机器都能阅读XML数据源。XML技术本身的特征及其相关技术的标准化,使得XML在Web技术等领域具有极其广泛的应用,XML是不同的系统之间数据交换的通用格式,以XML为接口的自动化系统具有良好的交互性。但是,XML技术本身很复杂,处理XML将给系统增加相当的工作负荷,XML的冗余也增加了系统之间的网络开销。因此,人们在使用XML作为传输数据的格式时,为了减低数据冗余,提高带宽利用率,想到了XML压缩技术,但这却进一步增加了本机的运算负荷。如何在提高XML的网络传输效率的同时,减轻单机XML的运算压力,变成了人们探究的课题。二进制XML,也就是Binary XML正是在此背景下应运而生,解决了资源受限的运算系统使用XML的重要难题。
Binary XML是XML数据紧凑的二进制表示形式,显著地降低了XML数据的冗余性,使得XML数据的解析也变得容易很多,减轻了处理XML数据的系统的运算工作,降低了XML数据传输时所占的带宽。Binary XML首先由无线应用领域提出并使用,先后有一些不同的规范出现,包括Wbxml(WAP Binary XML)、Fast Infoset(X.891)和EXI(Efficient XML Interchange)等。除了资源受限因素,许多要求高性能的系统,如数据库,也开始采用Binary XML来传输XML数据,完成XML数据的处理。
虽然Binary XML显著地降低了XML数据的冗余性,但其应用中存在的一个问题是:在处理针对Binary XML的查询请求以定位其中的节点(或元素)时,需要逐个遍历Binary XML数据源中的每个节点(包括元素节点和非元素节点),这在XML数据源本身节点数量庞大、树型关系复杂的情况下会导致定位节点的效率大大降低,并导致相应查询请求的时间延长。
发明内容
考虑到上述存在的问题,本发明的目的之一在于提供一种能够在定位(查询)Binary XML数据源中的节点时避免逐个遍历BinaryXML数据源中的每个节点的方法,以提高定位节点的效率。本发明的又一目的在于提供一种生成能够支持快速定位节点的Binary XML数据源的方法。
根据本发明的一个方面,提供了一种用于生成二进制XML数据的方法,包括:获取XML数据源;针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识;以及利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述FCD标识和NSD标识。
根据本发明的一个实施例,元素节点的FCD标识表示该元素节点的结束端至其第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该节点的结束端至其下一个兄弟节点的起始端的距离。
根据本发明的另一方面,提供了一种用于定位二进制XML数据中的节点的方法,所述二进制XML数据中包含首子距FCD标识和邻弟距NSD标识,包括:接收查询二进制XML数据中的节点的请求;获取该请求的查询路径;以及利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点。
通过本发明的方法和系统,可以实现在定位二进制XML数据过程中对不必要的节点进行跳转,从而节约了节点定位的时间、避免了扫描或读取不必要的节点,提高了节点查询和节点定位的效率。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示出了根据本发明一个实施例的用于生成二进制XML数据的方法的流程图;
图2示出了根据本发明一实施例的用于生成FCD标识和NSD标识的流程图;
图3示出了根据本发明一个实施例的用于定位二进制XML数据中的节点的方法的流程图;
图4A示出了基于不包含FCD和NSD标识的IBM Binary XML进行节点查询的示意图;
图4B示出了基于包含FCD和NSD标识的IBM Binary XML进行节点查询的示意图;
图5示出了根据本发明的又一实施例的用于定位二进制XML数据中的节点的方法的流程图;
图6示出了根据本发明一个实施例的用于生成二进制XML数据的系统的框图;
图7示出了根据本发明又一实施例的用于定位二进制XML数据中的节点的系统的框图;
图8A示出了基于不包含FCD和NSD标识的WBXML数据进行节点查询的示意图;
图8B示出了基于包含FCD和NSD标识的WBXML数据进行节点查询的示意图;
图9A示出了基于不包含FCD和NSD标识的MS-BINXML数据进行节点查询的示意图;以及
图9B示出了基于包含FCD和NSD标识的MS-BINXML数据进行节点查询的示意图。
具体实施方式
在下文中,将参考附图通过实施方式对本发明提供的用于确定要被物化的节点的方法和系统进行详细地描述。
图1示出了根据本发明一个实施例的用于生成二进制XML数据的方法的流程图。
图1所示的方法从步骤101开始。在步骤101中,获取XML数据源。这里,所获取的“XML数据源”是指未经紧凑化处理的,以树型结构存在的可扩展标记语言XML数据源。XML数据源可以是以任意形式存在的、表达XML语义的信息,包括但不限于:XML文档、XML信息流、SAX事件流、层次性或树状的存储结构等。
其中,“树型结构”是XML数据源的一个重要特征,其含义是指XML数据源表示了具有分层结构的多个元素节点间的层级关系,最顶端的元素节点称为“根节点”,最底端的元素节点称为“叶子节点”。“根节点”没有父节点,也没有兄弟节点,但是可能拥有“子节点”。“叶子节点”没有子节点,也是可能拥有“父节点”或“兄弟节点”。一个节点与其“父节点”或“子节点”之间存在类似于上级和下级的关系,而一个节点与其“兄弟节点”之间则处于同一层级。需要指出的是,“元素节点”与“节点”在含义上有所区别,本发明中所指的“节点”可能包括元素节点、文本节点、属性节点等多种节点。而“元素节点”则专指由XML数据源中的元素所构成的节点。然而,如果本发明中提到“根节点”、“父节点”、“子节点”、“兄弟节点”或“叶子节点”,则它们分别为“根元素节点”、“父元素节点”、“子元素节点”、“兄弟元素节点”或“叶子元素节点”的简称。
接下来图1所示的方法进行至步骤102。在步骤102中,针对该XML数据源中的元素节点,生成该元素节点的首子距FCD(FirstChild Distance)标识和邻弟距NSD(Next Sibling Distance)标识。根据本发明的一个实施方式,该元素节点的FCD标识表示该FCD标识的结束端至该元素节点的第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的下一个兄弟节点的起始端的距离。这样定义的依据是因为XML本质上就是树形关系的一种表达,所以元素a中可以嵌套元素b,所以元素a结束时,元素b肯定已经先结束,也就是说a(外层元素,或父元素)的结束位置肯定是在b(内层元素,或子元素)结束位置之后。根据本发明的又一实施方式,如果该元素节点没有兄弟节点,则该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的父节点的结束端的距离,如果该元素节点既没有下一个兄弟节点也没有父节点,则该元素节点的NSD标识为零。需要指出的是,还可以采用多种对FCD和NSD标识进行定义的方式,例如,可以令某一元素节点在没有下一个兄弟节点时,其NSD为零。例如,FCD标识的值还可以是本节点的第一个子节点的相对起始位置的偏移量,若本节点为叶子节点,则FCD为零。而NSD标识的值则为本节点的下一个兄弟节点的相对起始位置的偏移量,若该节点没有下一个兄弟节点时,则NSD为零。一般地,FCD和NSD可以是通过任何方式定义的,只要能直接得到或间接计算得到节点与它的第一个子节点或者节点与它的下一个兄弟节点之间的距离信息即落入本发明的保护范围。关于具体的计算得到FCD和NSD的过程,对于要生成不同的Binary XML格式可能有所不同,下文将结合图2进行具体说明。
接下来在步骤103中,利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述FCD标识和NSD标识。本领域技术人员应当了解,从XML数据源生成二进制XML(Binary XML)文档属于现有技术中的内容,基于不同的要生成的Binary XML数据源的格式,同一源XML数据源可以生成不同的Binary XML数据源。然而,无论现有技术中存在何种格式或标准的Binary XML数据源,均没有在所生成的Binary XML数据源中包含FCD标识和NSD标识。通过步骤103,可以在将源XML转换成Binary XML的过程中,为Binary XML中的节点加入FCD和NSD标识。因此,通过如图1所示的方法生成的Binary XML中即包含FCD标识和NSD标识。根据本发明的一个实施方式,在BinaryXML中的每个节点后均含有该节点的FCD标识和NSD标识,并且每个节点的FCD标识和NSD标识的排列顺序可以是任意的。根据本发明的一个实施方式,对于Binary XML中的每个元素节点而言,FCD标识和NSD标识是定长的,也就是说,无论FCD和NSD的值是多少,对每一个元素节点而言,这两个标识均占据一定的字符长度。根据本发明的另一实施方式,FCD标识和NSD标识是变长的,也就是说,FCD和NSD的具体取值将影响某个元素节点的FCD标识和NSD标识所占据的字节长度。包含了FCD和NSD标识的Binary XML有利于在查询或定位Binary XML的节点时,利用其中包含的FCD标识和NSD标识跳过大量的节点,而无需逐个扫描Binary XML中的节点,从而提升节点定位的效率。具体的包含了FCD标识和NSD标识的实例将在下文中结合图4具体描述。还需要强调的是,在上文对FCD和NSD的示例性定义中,其中的“该节点的FCD标识表示该节点的结束端至其第一个子节点的起始端的距离”中的“结束端”在添加了FCD和NSD标识的情况下就不再简单地是原节点的结束位置,而必须考虑FCD和NSD标识本身所占的字节长度。可以将“结束端”理解为“当前位置”,“当前位置”在添加了FCD和NSD标识的情况下就考虑到了这两个标识本身所占据的字节。同样地,对“该节点的NSD标识表示该节点的结束端至其下一个兄弟节点的起始端的距离”中的“结束端”也可以作类似的理解。具体的关于FCD和NSD指示的距离的含义在下文中结合图4B将会被更清晰地体现。
图2示出了根据本发明又一实施例的用于生成FCD标识和NSD标识的流程图。首先要指出的是,图2所示的方法是在由XML数据源生成二进制XML(Binary XML)数据的过程中执行的。本领域技术人员应当理解,现有技术在生成二进制XML(Binary XML)数据的过程中是按序处理XML数据源中的节点的。
在步骤201中,在XML数据源的每个元素节点后添加初始值为零的FCD和NSD标识。在步骤102中,在按序处理XML数据源的节点的过程中,对于非叶子节点的FCD的值而言,当遇到该非叶子节点的第一个子节点时,计算该非叶子节点的结束端到该第一个子节点的起始端的距离,从而获得FCD的值,并更新FCD标识的初始值。在步骤103中,在按序处理XML数据源的节点的过程中,对于非根节点的NSD的值而言,当遇到该非根节点的下一个兄弟节点时,计算从该非根节点的结束端到该兄弟节点的起始端的距离,从而获得该非根节点的NSD的值,并更新NSD标识的初始值。如果将NSD定义为:当某元素节点没有下一个兄弟节点时,NSD为该元素节点到其父节点的结束端的距离,那么也可以当遇到该非根节点的父节点的结束端时,计算从该非根节点的结束端到该父节点的结束端的距离,从而获得该非根节点的NSD的值,并更新NSD标识的初始值。本领域技术人员应当理解,具体的计算FCD和NSD的方法可能与具体的对FCD和NSD在特殊情况下(如某节点没有下一个兄弟节点、没有子节点、没有父节点)的赋值规定相关,但是无论在特殊情况下对FCD和NSD的赋值作出何种规定,FCD和NSD标识的基本含义都是一致的:FCD标识表示该节点的结束端至其第一个子节点的起始端的距离并且NSD标识表示该节点的结束端至其下一个兄弟节点的起始端的距离。而且,本领域普通技术人员完全可以在理解了上述描述的算法原理和思想的基础上,将该算法扩展应用于不同的FCD和NSD的定义中。
上面给出了生成FCD和NSD标识的概要性的算法描述,下面继续给出更详细的操作流程:细化一点的计算FCD/NSD步骤:(a)初始化辅助的全局数据结构;(b)每一个元素节点处理开始(startElement)时,检查辅助的数据状态,如果其父节点的FCD需要并可计算得到,根据相应公式计算父元素的FCD,并更新父元素的FCD值;(c)生成当前处理的元素节点的Binary XML内容,并更新辅助的数据信息;(d)每一个元素节点处理结束(endElement)时,检查辅助的数据状态,如果当前元素的NSD需要并可计算得到,根据相应公式计算当前元素的NSD,并更新前元素的NSD,生成后续的Binary XML内容。
接下来,在上述关于生成FCD和NSD标识的方法描述的基础上进一步描述微观上可操作的生成FCD和NSD标识的步骤:(a)初始化一个保存整型数值的栈,记录每个元素NSD数值的起始存储位置m_nsd;(b)每一个元素节点开始(startElement)时,检查栈,如果栈非空且父节点的FCD为零,则读取栈顶数值m_nsd,根据公式FCD=cursor-m_nsd+2计算父节点的FCD(其中cursor为存储生成的Binary XML的当前“游标”),并更新存储在(m_nsd-5)位置的父节点的FCD值;(c)如果父节点为根节点,则弹出栈顶数值;(d)生成当前节点的Binary XML内容,在元素节点标签单元后添加初始值为零的FCD/NSD标签,并将本元素节点的NSD数值的起始位置m_nsd放到栈顶;(e)每一个元素节点结束(endElement)时,检查栈非空,则弹出栈顶数值m_nsd,根据公式NSD=cursor-m_nsd-2计算本元素节点的NSD,并更新存储在m_nsd位置的NSD值;(f)生成后续的BinaryXML内容。
由上述细化的生成FCD和NSD标识的过程可知,上述计算方法所依据的对FCD和NSD的定义乃是:FCD表示当前位置到本元素节点的第一个子节点的距离,若本元素节点为叶子节点(即无子节点),则FCD为零。NSD表示当前位置到本元素节点的下一个兄弟节点的距离,若没有下一个兄弟节点,则表示当前位置到父节点结束位置的距离,若既没有下一个兄弟节点又没有父节点,则NSD为零。本领域技术人员完全可以在理解了上述堆栈算法的原理之后,将该算法扩展适用于所有的对FCD和NSD的定义的情况,只需根据具体的定义改变具体公式即可。
图3示出了根据本发明一个实施例的用于定位二进制XML数据中的节点的方法的流程图。图3所示的方法利用的二进制XML数据文件中包含元素节点的首子距FCD标识和邻弟距NSD标识。该包含FCD标识和NSD标识的二进制XML数据是已经存在的,无论采用何种方法生成该二进制XML数据均落入本发明的保护范围。图3所示的方法从步骤301开始。在步骤301中,接收查询二进制XML数据中的节点的请求。查询请求可以由数据库查询语言SQL/XML指令或者XQuery的形式提出。根据本发明的一个实施例,二进制XML数据中包含FCD和NSD标识。关于FCD和NSD标识的具体含义以及可选的定义方式已经在上文中进行描述,在此不再赘述。
在步骤302中,获取查询请求的查询路径(Xpath)。XPath使用路径表达式来选取XML文档中的节点或者节点集。由于XML数据源具有树型结构,因此查询路径也具有树型结构。以下面这个XML数据源为例:
<dep mgr=″Peter″>
   <proj>Web</proj>
   <emp>John</emp>
</dep>
上面这个XML数据源包括三个元素:dep(根节点)、proj(叶子节点)以及emp(叶子节点)。其中,dep节点拥有两个子节点proj和emp,proj和emp互为兄弟节点,但基于XML文档的有序性,只有emp才构成proj的“下一个兄弟节点”。该XML数据源基于改进的IBM Binary XML格式的二进制XML数据(即包含FCD和NSD标识)如下:
X3dep1v0018>0000Y3mgr25peterX4proi3v0000>0007T3WebzX3emp4v0000>0008T4JohnzzZ
添加下划线部分的即为每个节点的FCD和NSD标识,“v0018”是一个FCD标识实施例,“v”符号标记FCD,“v”之后的数值为该CFD标识的确切取值;类似地,“>”符号标记NSD,“>”符号之后的数值为该NSD标识的确切取值。(下划线起强调作用,本身并非Binary XML数据源的一部分)。具体的生成包含FCD和NSD标识的Binary XML数据源的过程在图1、图2以及相应的文字部分已经详细描述。而除了上述FCD和NSD标识之外的Binary XML数据源的其它部分的生成方式属于现有技术中的内容,本领域技术人员可以通过参考目前公开的多种Binary XML数据源的格式说明而实现。
由此可见,经紧凑化处理后的Binary XML数据源仍然保持了源XML的树型结构。具体的由源XML生成Binary XML的方法可以参考相关Binary XML标准的格式定义说明。这里举出的Binary XML的例子并非依据本发明添加了FCD和NSD标识的Binary XML,而属于按照已有的Binary XML的格式定义生成的Binary XML。
在这个XML数据源中,<dep>、<proj>以及<emp>都是元素节点(又称为元素),<dep>是根节点,其拥有两个子节点<proj>和<emp>。而<proj>和<emp>互为兄弟节点。如果现在要查询<emp>节点的值,则查询路径表达式为/dep/emp/。
接下来在步骤303中,利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点。如果是针对不包含FCD和NSD标识的Binary XML数据源进行节点查询,那么只能逐个扫描每个节点,包括:元素节点(例如以“X”起始的dep)、属性节点(例如以“Y”起始的mgr)、文本节点(例如以“T”起始的Web),直到最终扫描到要查询的元素节点exp。而现在,如果Binary XML数据源中包含了每个节点的FCD和NSD标识,那么就可以利用FCD和NSD标识跳过一些节点,直接定位至元素节点exp。图4A和图4B分别示出了基于不包含FCD和NSD标识的Binary XML进行节点查询,以及基于包含FCD和NSD标识的Binary XML进行节点查询的示意图。如图4A所示,游标需要“跳跃”6次才能定位至待查询的元素节点exp。而如图4B所示,游标仅需要“跳跃”3次,就可以定位至待查询的元素节点exp,直接跳过了其中的属性节点mgr,元素节点proj以及文本节点peter,大大提高了定位Binary XML数据源中的节点的效率。
图5示出了根据本发明的又一实施例的用于定位二进制XML数据中的节点的方法的流程图。为了叙述的方便,下面以一个具体的XML数据源以及对应的包含了FCD标识和NSD标识的二进制XML数据为例,详细描述图5所示的方法的流程。首先需要指出的是,下面示例的二进制XML数据是以IBM Binary XML标准格式为基础的。
假设XML数据源如下:
<dep mgr=″Peter″>
<proj>Web</proj>
<emp>John</emp>
</dep>
上面这个XML数据源基于IBM Binary XML格式的二进制XML数据(包含FCD和NSD标识)如下:
X3dep1v0018>0000Y3mgr25peterX4proi3v0000>0007T3WebzX3emp4v0000>0008T4JohnzzZ
再假设用户提交的查询请求(SQL或XQuery)要查询元素节点emp的内容,则查询路径Xpath是/dep/emp/(具体的SQL语句或XQuery语句在此略去)。
在步骤501中,定位Binary XML数据的第一个节点(也就是根节点)。由于Binary XML与XML数据源类似,也具有按序排列的树型结构,因此在查询Binary XML数据中的节点时,要从根节点开始按序扫描。
在步骤502中,判断所定位的Binary XML数据的第一个节点(根节点)的名称是否与查询路径中的第一个元素的名称一致。如果一致,则进行至步骤503,如果不一致,则进行至步骤510。不一致的原因包括查询请求输入错误。在步骤510中,由于无匹配结果,因此流程结束。在上述示例中,查询路径/dep/emp/中的第一个元素为“dep”,与Binary XML数据的第一个节点的名称一致,因此进行至步骤503。
在步骤503中,根据第一个节点的FCD标识,跳转至该第一个节点的第一子节点(首个子节点)。在上述示例中,第一个节点dep后面包含v0018>0000的FCD和NSD标识,其中FCD标识位于“>”的左边,NSD标识位于“>”的右边。在此例中,FCD标识的值为0018,表示从FCD标识的最后一个字节“8”开始向后数18个字节,即为节点dep的第一子节点proj的开始。因此,在步骤503中,根据节点dep的FCD标识0018,向后跳转18个字节,直接定位至dep的第一子节点proj的开始“X”。通过这次跳转,属性节点mgr被跳过。
接下来,在步骤504中判断第一个节点的第一子节点的名称是否与查询路径中的第二个元素的名称一致。如果一致,则进行至步骤506。如果不一致,则进行至步骤505。在上述示例中,由于查询路径/dep/emp/中的第二个元素名称为emp,与在步骤503中跳转到的第一个节点dep的第一子节点proj的名称不一致,因此进行至步骤505。
在描述步骤505之前,介绍一下步骤506的操作。在步骤506中,判断查询路径是否已遍历。“遍历”的含义是指查询路径中的最后一个元素为当前跳转到的节点。如果步骤506的判断结果为是,说明查询路径已经被处理完毕并且找到了匹配的结果,因此在步骤509中结束。如果步骤506的判断结果为否,则说明查询路径中还有其它尚未处理的节点,因此返回至步骤503。需要指出的是,从步骤506返回至步骤503时,应当在步骤503中跳转至当前节点的第一子节点,而并非如附图5所示的文字说明记载的仍然“跳转至第一个节点的第一子节点”。对于图5所示的流程图其它所有返回循环执行的步骤,都是针对“当前跳转到的节点”而言,图5中的文字说明仅仅是为了说明第一轮执行过程中的操作,本领域技术人员应当从本段文字描述部分明晰此点。
在步骤505中,利用该第一子节点的NSD标识,跳转至该第一子节点的下一个兄弟节点。在上述示例中,第一子节点是proj,它的下一个兄弟节点是emp。在上述Binary XML数据中,第一子节点proj的NSD标识为0007,这表示从NSD标识的最后一个字节“7”开始向后数7个字节,即为节点proj的下一个兄弟节点emp的起始“X”。通过这次跳转,文本节点“Web”被跳过。
接下来,在步骤507中判断所跳转到的该兄弟节点的名称与查询路径中的第二个元素的名称是否一致(刚才在步骤504中,判断得知查询路径中第二个元素的名称与根节点的第一子节点的名称不一致)。根据上述示例,查询路径/dep/emp/的第二个元素的名称emp与在步骤505中所跳转到的第一子节点proj的下一个兄弟节点emp的名称一致,因此进行至步骤508。
在步骤508中,判断查询路径是否已遍历。如上所述,查询路径/dep/emp/中的最后一个元素emp为当前跳转到的节点,因此查询路径已遍历,从而找到匹配结果,在步骤509结束流程。
如果步骤507的判断结果为否,则返回至步骤505,跳转至当前所处节点的下一个兄弟节点(也就是节点emp的下一个兄弟节点),直到步骤507的判断结果为是。
如果步骤508的判断结果为否,则返回至步骤503,跳转至当前所处节点的第一子节点(也就是节点emp的第一个子节点)。
还需要指出的是,出于简洁的目的,有一些步骤未是出于图5的流程图中。例如,在步骤505和步骤507之间还可以包括判断是否到达当前所处节点的父节点的终结的步骤。如果在定义NSD标识的含义时规定如果一个节点没有下一个兄弟节点,那么NSD标识表示该节点的结束端至其父节点的结束端的距离。这样一来,在步骤505中跳转到的兄弟节点实际上可能为其父节点的终结位置。在此情形下,则直接进行至结束步骤510,也就是无法找到匹配结果。根据上述示例,节点emp没有下一个兄弟节点(emp是proj的下一个兄弟节点,但是proj并不是emp的下一个兄弟节点,这是基于XML数据的有序性决定的),那么就把节点emp的结束端到其父节点dep的结束端(</dep>)的距离的值赋予节点emp的NSD标识(即0008)。那么假设查询路径是/dep/abc/,则在步骤505中跳转7个字节至emp的父节点的结束端“z”,从而判断得知当前所处节点是其父节点的结束端,因此直接进行至步骤510结束,无匹配结果。本领域技术人员应当理解,上述关于判断是否处于父节点的结束端的内容与对NSD标识的定义有关,采用不同的对NSD标识的定义可能对具体的定位节点的步骤有影响,但本领域技术人员完全可以基于上述根据IBM Binary XML标准格式的示例中所揭示的原理和方法,将该原理和方法应用于多种其它的对FCD和NSD标识的定义,也可以将该原理和方法应用于多种其它的Binary XML的格式,例如WBXML以及MS-BINXML等。
上述关于图5的文字描述部分,其中的“z”、“X”等字符均属于IBM Binary XML标准格式说明中规定的具有特殊含义的字符,并不构成对本发明的任何限制。
图6示出了根据本发明一个实施例的用于生成二进制XML数据的系统的框图。图6所示的系统在整体上由系统600表示。具体地,系统600包括XML数据源获取装置601,用于获取XML数据源;标识生成装置602,用于针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识;以及二进制XML数据生成装置603,用于利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据包含所述FCD标识和NSD标识。可以理解,系统600中的装置601-603分别对应于图1所示的方法中的步骤101-103。
图7示出了根据本发明的一个实施例的用于定位包含FCD标识和NSD标识的二进制XML数据中的节点的系统的框图。图7所示的系统在整体上由系统700表示。具体地,系统700包括查询请求接收装置701,用于接收查询二进制XML数据中的节点的请求;查询路径获取装置702,用于获取所述查询请求的查询路径;以及节点定位装置703,用于利用该查询路径以及二进制XML数据中包含的FCD和NSD标识,定位被查询的节点。可以理解,系统700中的装置701-703分别对应于图3所示的方法中的步骤301-303。
图8A和8B分别示出了基于不包含以及包含FCD和NSD标识的WBXML数据进行节点查询的示意图。WBXML与IBM BinaryXML类似,也是一种二进制XML数据格式标准。关于WBXML规定的将XML数据源转换成二进制XML数据的方式,本领域技术人员可以参考公开的WBXML标准说明。这里需要指出的是,如图8B所示,经过添加了FCD和NSD标识后的基于WBXML标准的二进制XML数据(同样根据上文中举出的XML数据源的示例),可以实现节点的跳转,只不过每个元素节点后添加的FCD和NSD标识的值不同。
图9A和9B分别示出了基于不包含以及包含FCD和NSD标识的MS-BINXML数据进行节点查询的示意图。MS-BINXML与WBXML、IBM Binary XML类似,也是一种二进制XML数据格式标准。关于MS-BINXML规定的将XML数据源转换成二进制XML数据的方式,本领域技术人员可以参考公开的MS-BINXML标准说明。这里需要指出的是,如图9B所示,经过添加了FCD和NSD标识后的基于MS-BINXML标准的二进制XML数据(同样根据上文中举出的XML数据源的示例),可以实现节点的跳转,只不过每个元素节点后添加的FCD和NSD标识的值不同。
总结如图4A和4B、8A和8B以及9A和9B示出的三种不同的二进制XML数据的标准格式,可以看出:无论具体的二进制XML数据格式规范是什么,它们都是依据按序排列的、具有树型结构的XML数据源,对该XML数据源中的元素节点按序依次处理从而转换成相应的二进制XML数据。尽管依据每种二进制XML标准转换得到的二进制XML数据形式不同甚至有很大差异,但是都可以利用它们共同的“结构化数据”特征在生成二进制XML数据时添加FCD标识和NSD标识,并在查询该经过改进的二进制XML数据时利用所添加的FCD和NSD标识,进行节点的跳转,提高节点定位和查询的效率。
需要的强调的是,本发明说明书及附图中示出的关于各类标准二进制XML的实例以及含有FCD和NSD标识的二进制XML的实例中,为了理解的便利直接以10进制数字形式表示相关数值。实际上,这些实例并不一定表示二进制XML数据在计算机中存储的原本格式。
通过以上对具体实施例的描述,本领域技术人员可以理解,上述的系统、装置和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的装置、服务器及其单元可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。
虽然以上结合具体实例,对本发明的利用远程应用处理本地文件的系统及方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。

Claims (18)

1.一种用于生成二进制XML数据的方法,包括:
获取XML数据源;
针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识,其中FCD标识表示该元素节点的结束端至其第一个子节点的起始端的距离并且NSD标识表示该元素节点的结束端至其下一个兄弟节点的起始端的距离;
利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述FCD标识和NSD标识。
2.如权利要求1所述的方法,其中该元素节点的FCD标识表示该FCD标识的结束端至其该元素节点的第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的下一个兄弟节点的起始端的距离。
3.如权利要求2所述的方法,如果该元素节点没有兄弟节点,则该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的父节点的结束端的距离,如果该元素节点既没有兄弟节点也没有父节点,则该元素节点的NSD标识为零。
4.如权利要求1或2所述的方法,其中针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识包括:
将FCD标识和NSD标识初始化为零;
对于非叶子节点,当开始处理其第一个子节点时,计算FCD并更新FCD标识;
对于非根节点,当开始处理其下一个兄弟节点时,计算NSD并更新NSD标识。
5.一种用于定位二进制XML数据中的节点的方法,所述二进制XML数据中包含首子距FCD标识和邻弟距NSD标识,所述方法包括:
接收查询二进制XML数据中的节点的请求;
获取该请求的查询路径;
利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点,
其中FCD标识表示所述二进制XML数据中的元素节点的结束端至其第一个子节点的起始端的距离并且NSD标识表示所述二进制XML数据中的元素节点的结束端至其下一个兄弟节点的起始端的距离。
6.如权利要求5所述的方法,其中利用该查询路径以及所述二进制XML数据中所包含的首子距FCD标识和邻弟距NSD标识,定位被查询的节点包括:
利用所述二进制XML数据中元素节点的FCD标识跳转至该元素节点的第一个子节点;以及
利用所述二进制XML数据中元素节点的NSD标识跳转至该元素节点的下一个兄弟节点。
7.如权利要求5所述的方法,其中利用该查询路径以及所述二进制XML数据中所包含的首子距FCD标识和邻弟距NSD标识,定位被查询的节点包括:
(a)定位二进制XML数据中的第一个元素节点;
(b)判断该第一个节点的名称与查询路径中的第一个元素节点的名称是否一致;
(c)如果判断结果为是,则利用该二进制文档中的第一个元素节点的FCD标识跳转至其第一个子节点;
(d)判断该第一个子节点的名称与查询路径中的第二个节点的名称是否一致;以及
(e)如果判断结果为否,则利用该第一个子节点的NSD标识跳转至该第一个子节点的下一个兄弟节点。
8.如权利要求7所述的方法,进一步包括:如果步骤(d)的判断结果为是,则进一步判断查询路径中的节点是否已遍历完毕。
9.如权利要求5所述的方法,其中该节点的FCD标识表示该FCD标识的结束端至该节点的第一个子节点的起始端的距离,并且如果该节点为叶子节点,则FCD标识为零,以及该节点的NSD标识表示该NSD标识的结束端至该节点的下一个兄弟节点的起始端的距离。
10.一种用于生成二进制XML数据的系统,包括:
XML数据源获取装置,用于获取XML数据源;
标识生成装置,用于针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识;
二进制XML数据生成装置,用于利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述FCD标识和NSD标识,其中FCD标识表示该元素节点的结束端至其第一个子节点的起始端的距离并且NSD标识表示该元素节点的结束端至其下一个兄弟节点的起始端的距离。
11.如权利要求10所述的系统,其中该元素节点的FCD标识表示该FCD标识的结束端至其该元素节点的第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的下一个兄弟节点的起始端的距离。
12.如权利要求11所述的系统,如果该元素节点没有兄弟节点,则该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的父节点的结束端的距离,如果该元素节点既没有兄弟节点也没有父节点,则该元素节点的NSD标识为零。
13.如权利要求10或11所述的系统,所述标识生成装置被配置为:
将FCD标识和NSD标识初始化为零;
对于非叶子节点,当开始处理其第一个子节点时,计算FCD并更新FCD标识;
对于非根节点,当开始处理其下一个兄弟节点时,计算NSD并更新NSD标识。
14.一种用于定位二进制XML数据中的节点的系统,所述二进制XML数据中包含首子距FCD标识和邻弟距NSD标识,所述系统包括:
查询请求接收装置,用于接收查询二进制XML数据中的节点的请求;
查询路径获取装置,用于获取该请求的查询路径;
节点定位装置,用于利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点,
其中FCD标识表示所述二进制XML数据中的元素节点的结束端至其第一个子节点的起始端的距离并且NSD标识表示所述二进制XML数据中的元素节点的结束端至其下一个兄弟节点的起始端的距离。
15.如权利要求14所述的系统,所述节点定位装置被配置为:
利用所述二进制XML数据中元素节点的FCD标识跳转至该元素节点的第一个子节点;以及
利用所述二进制XML数据中元素节点的NSD标识跳转至该元素节点的下一个兄弟节点。
16.如权利要求14所述的系统,所述节点定位装置被配置为:
(a)定位二进制XML数据中的第一个元素节点;
(b)判断该第一个节点的名称与查询路径中的第一个元素节点的名称是否一致;
(c)如果判断结果为是,则利用该二进制文档中的第一个元素节点的FCD标识跳转至其第一个子节点;
(d)判断该第一个子节点的名称与查询路径中的第二个节点的名称是否一致;以及
(e)如果判断结果为否,则利用该第一个子节点的NSD标识跳转至该第一个子节点的下一个兄弟节点。
17.如权利要求16所述的系统,所述节点定位装置被进一步配置为:如果步骤(d)的判断结果为是,则进一步判断查询路径中的节点是否已遍历完毕。
18.如权利要求14所述的系统,其中该节点的FCD标识表示该FCD标识的结束端至该节点的第一个子节点的起始端的距离,并且如果该节点为叶子节点,则FCD标识为零,以及该节点的NSD标识表示该NSD标识的结束端至该节点的下一个兄弟节点的起始端的距离。
CN201110045815.8A 2011-02-25 2011-02-25 用于二进制xml数据的生成及其节点定位的方法和装置 Expired - Fee Related CN102650992B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110045815.8A CN102650992B (zh) 2011-02-25 2011-02-25 用于二进制xml数据的生成及其节点定位的方法和装置
US13/402,162 US8838642B2 (en) 2011-02-25 2012-02-22 Generating and navigating binary XML data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110045815.8A CN102650992B (zh) 2011-02-25 2011-02-25 用于二进制xml数据的生成及其节点定位的方法和装置

Publications (2)

Publication Number Publication Date
CN102650992A CN102650992A (zh) 2012-08-29
CN102650992B true CN102650992B (zh) 2014-07-30

Family

ID=46693000

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110045815.8A Expired - Fee Related CN102650992B (zh) 2011-02-25 2011-02-25 用于二进制xml数据的生成及其节点定位的方法和装置

Country Status (2)

Country Link
US (1) US8838642B2 (zh)
CN (1) CN102650992B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700638B2 (en) * 2011-03-08 2014-04-15 Libera, Inc. Computer-implemented weighted tree search to resolve variable name ambiguity
EP2605481A1 (de) * 2011-12-13 2013-06-19 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Filtern von Netzwerkverkehr
US9342285B2 (en) 2012-11-30 2016-05-17 Huawei Technologies Co., Ltd. Method and apparatus for detecting code change
CN103150346B (zh) * 2013-02-07 2016-08-24 南京邮电大学 一种基于可扩展标记语言的无线传感器网络数据压缩方法
US9230040B2 (en) * 2013-03-14 2016-01-05 Microsoft Technology Licensing, Llc Scalable, schemaless document query model
US9659045B2 (en) * 2013-11-08 2017-05-23 Oracle International Corporation Generic indexing for efficiently supporting ad-hoc query over hierarchically marked-up data
US10157239B2 (en) 2013-12-23 2018-12-18 Oracle International Corporation Finding common neighbors between two nodes in a graph
US20160117410A1 (en) * 2014-10-23 2016-04-28 Fujitsu Limited Exi format to represent json documents
CN104484337B (zh) * 2014-11-19 2018-09-14 西安电子科技大学 Xml文档的存储方法
CN104506464A (zh) * 2014-12-12 2015-04-08 北京中科江南软件有限公司 基于节点描述符的电子报文解析组件
CN107643956B (zh) * 2017-08-22 2020-09-01 北京京东尚科信息技术有限公司 定位异常数据的异常起源的方法和装置
US11226955B2 (en) 2018-06-28 2022-01-18 Oracle International Corporation Techniques for enabling and integrating in-memory semi-structured data and text document searches with in-memory columnar query processing
CN109032599B (zh) * 2018-07-17 2021-06-18 北京世纪好未来教育科技有限公司 基于xml表示生成可交互流程图的方法、装置、设备、介质
CN109325149B (zh) * 2018-09-30 2020-08-11 中国银行股份有限公司 Xml报文检索方法及装置
US11157478B2 (en) 2018-12-28 2021-10-26 Oracle International Corporation Technique of comprehensively support autonomous JSON document object (AJD) cloud service
US11640380B2 (en) 2021-03-10 2023-05-02 Oracle International Corporation Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in RDBMS
US11704309B2 (en) * 2021-06-29 2023-07-18 Microsoft Technology Licensing, Llc Selective use of data structure operations for path query evaluation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1965316A (zh) * 2004-04-09 2007-05-16 甲骨文国际公司 用于存取xml数据的索引
CN101661481A (zh) * 2008-08-29 2010-03-03 国际商业机器公司 存储xml数据的方法、执行xml查询的方法及其装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6646652B2 (en) * 2000-12-21 2003-11-11 Xerox Corporation System and method for browsing node-link structures based on an estimated degree of interest
US6804677B2 (en) * 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US7321900B1 (en) * 2001-06-15 2008-01-22 Oracle International Corporation Reducing memory requirements needed to represent XML entities
US7810024B1 (en) * 2002-03-25 2010-10-05 Adobe Systems Incorporated Efficient access to text-based linearized graph data
AU2003250302A1 (en) * 2002-07-15 2004-03-03 Siemens Aktiengesellschaft Method and devices for encoding/decoding structured documents, especially xml documents
US7761459B1 (en) * 2002-10-15 2010-07-20 Ximpleware, Inc. Processing structured data
US7350199B2 (en) * 2003-01-17 2008-03-25 Microsoft Corporation Converting XML code to binary format
US7937413B2 (en) * 2004-05-04 2011-05-03 International Business Machines Corporation Self-adaptive prefix encoding for stable node identifiers
US7260580B2 (en) 2004-06-14 2007-08-21 Sap Ag Binary XML
WO2006081428A2 (en) * 2005-01-27 2006-08-03 Symyx Technologies, Inc. Parser for generating structure data
WO2007134407A1 (en) * 2006-05-24 2007-11-29 National Ict Australia Limited Selectivity estimation
US7739251B2 (en) * 2006-10-20 2010-06-15 Oracle International Corporation Incremental maintenance of an XML index on binary XML data
US7886223B2 (en) * 2006-11-17 2011-02-08 International Business Machines Corporation Generating a statistical tree for encoding/decoding an XML document
US7831540B2 (en) * 2007-10-25 2010-11-09 Oracle International Corporation Efficient update of binary XML content in a database system
US9842090B2 (en) 2007-12-05 2017-12-12 Oracle International Corporation Efficient streaming evaluation of XPaths on binary-encoded XML schema-based documents
US7925643B2 (en) * 2008-06-08 2011-04-12 International Business Machines Corporation Encoding and decoding of XML document using statistical tree representing XSD defining XML document
US8346813B2 (en) * 2010-01-20 2013-01-01 Oracle International Corporation Using node identifiers in materialized XML views and indexes to directly navigate to and within XML fragments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1965316A (zh) * 2004-04-09 2007-05-16 甲骨文国际公司 用于存取xml数据的索引
CN101661481A (zh) * 2008-08-29 2010-03-03 国际商业机器公司 存储xml数据的方法、执行xml查询的方法及其装置

Also Published As

Publication number Publication date
US8838642B2 (en) 2014-09-16
CN102650992A (zh) 2012-08-29
US20120221604A1 (en) 2012-08-30

Similar Documents

Publication Publication Date Title
CN102650992B (zh) 用于二进制xml数据的生成及其节点定位的方法和装置
US7870124B2 (en) Rewriting node reference-based XQuery using SQL/SML
Sevilla Ruiz et al. Inferring versioned schemas from NoSQL databases and its applications
CN102033954B (zh) 关系数据库中可扩展标记语言文档全文检索查询索引方法
US7739251B2 (en) Incremental maintenance of an XML index on binary XML data
US9576011B2 (en) Indexing hierarchical data
US7523131B2 (en) Techniques for efficiently storing and querying in a relational database, XML documents conforming to schemas that contain cyclic constructs
US8566343B2 (en) Searching backward to speed up query
CN102456053B (zh) 一种xml文档到数据库的映射方法
US7577642B2 (en) Techniques of XML query optimization over static and dynamic heterogeneous XML containers
US8972489B2 (en) Providing a client interface for a server-based web application programming interface
US7822788B2 (en) Method, apparatus, and computer program product for searching structured document
Lindholm et al. Fast and simple XML tree differencing by sequence alignment
JP3962417B2 (ja) データベースに対するアクセスを制御するシステム、およびその方法
US20090019077A1 (en) Accelerating value-based lookup of XML document in XQuery
US20050172217A1 (en) System and method for schemaless data mapping with nested tables
CN101763255A (zh) 一种专用界面工具的格式转换方法及装置
JP4247135B2 (ja) 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法
US20080033967A1 (en) Semantic aware processing of XML documents
CN103544281A (zh) 一种关键字检索方法、装置及系统
CN103902651A (zh) 一种基于MongoDB的云端代码查询方法与装置
Hsu et al. UCIS-X: an updatable compact indexing scheme for efficient extensible markup language document updating and query evaluation
CN113448942B (zh) 数据库访问方法、装置、设备及存储介质
US20100036825A1 (en) Interleaving Query Transformations For XML Indexes
JP4866844B2 (ja) Lobに格納されたxml内容の効率的な抽出

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140730

Termination date: 20210225