CN102446218A - 一种支持xml数据动态更新的编码方法 - Google Patents
一种支持xml数据动态更新的编码方法 Download PDFInfo
- Publication number
- CN102446218A CN102446218A CN201110380643XA CN201110380643A CN102446218A CN 102446218 A CN102446218 A CN 102446218A CN 201110380643X A CN201110380643X A CN 201110380643XA CN 201110380643 A CN201110380643 A CN 201110380643A CN 102446218 A CN102446218 A CN 102446218A
- Authority
- CN
- China
- Prior art keywords
- node
- layer
- coding
- brotgher
- joint
- 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.)
- Pending
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种支持XML数据动态更新的编码方法,通过给XML树中的每个节点分配一个隐含位置关系的编码,以直接比较两个节点编码来确定它们之间的结构关系;以父节点的编号为前缀,加上该节点在本层的唯一层编码构成节点的编号,而当根节点没有父节点时,其编码为1;对于新***的节点n,当n作为叶节点的子节点***时,n的层编码为2;而当n作为非叶节点的孩子节点***时,分为最左***、中间***和最右***,根据该三种不同的情况由扩展字节进制编码动态***算法生成新的节点编码。本发明不但能保持和其他节点之间的位置关系,又不会引起已有节点编码的改变。一方面提高了编码的效率,另一方面降低了编码的存储空间成本。
Description
技术领域
本发明属于XML格式数据处理技术领域,涉及一种支持XML数据动态更新的编码方法。
背景技术
由于具有半结构性、开放性、异构性、可扩展性、灵活性等特点,XML已经成为互联网上数据表示和交换的事实标准。随着网络技术的迅速发展,越来越多的数据采用XML格式存储,如何快速有效地存储XML数据,并提供高效的XML数据查询处理,已成为当前研究的一个热点。互联网应用对用XML格式表示和存储数据的需求不断增加,XML数据存储一般通过对XML树结构按特定规则进行编码来实现。通过给XML树中的每个节点分配一个隐含位置关系的编码,就可以直接比较两个节点编码来确定它们之间的结构关系。
W3C工作组针对XML数据查询开发了XPath和XQuery查询语言,其共同特征是通过路径表达式来实现XML文档查询。执行路径查询的主要技术是结构连接,即确定两个节点之间的结构关系(祖先后裔关系或父子关系等)。而节点之间结构关系的确定主要依赖于有效的XML树节点编码方法。XML编码就是按照一定规则给XML文档树中每个节点分配一个隐含位置关系的编码,在不遍历XML文档树的前提下通过比较两个节点的编码直接判断两个节点之间是否存在父子、祖先-后裔、兄弟、前驱、后继等结构关系。
目前与XML数据存储与编码的研究成果比较多,其中主要有两大类方法:基于区间的编码和基于路径的编码。其中,基于区间的编码方案利用XML文档有序的特点,根据每一个元素节点在原XML文档中出现的顺序给每一个元素节点赋予一个编码;而基于路径的编码方案则是利用XML文档嵌套的特点, 根据XML文档嵌套结构,给文档根节点及从文档根节点开始所能到达的每条路径的其他节点赋予一个编码。
XML动态性是指对XML文档的***、删除和更新操作的支持。由于XML文档的删除和更新操作不会涉及对已有XML节点编码的改变,因此对于XML编码机制来说,动态性就是能为新***的节点分配合法的编码。完全支持动态更新的XML编码是指在任意位置***一个新节点时,可以得到一个合法的编码,而不用修改已存在的任何节点编码。
事实上,对编码支持动态更新的研究可以转化为研究如何在两个值之间***一个中间值,使得这个中间值不但能保持既有的大小顺序,而且在***这个中间值后不会引起对其他已存在值的重新分配。
在已公布的动态编码方法中,压缩动态四级字符串算法(简称:CDQS)是最优秀的,但是CDQS使用递归的方法生成节点编码,需要在编码前得到编码所要表示的范围,然后递归地生成第1/3和第2/3处的编码,在性能和编码空间存储上均存在有明显的缺陷。
发明内容
为解决上述问题,本发明的目的在于提供一种支持XML数据动态更新的编码方法,以提高编码的效率,并降低编码的存储空间成本。
为实现上述目的,本发明的技术方案为:
一种支持XML数据动态更新的编码方法,为XML树中的每个节点分配一个隐含位置关系的编码,以直接比较两个节点编码来确定它们之间的结构关系;以父节点的编号为前缀,加上该节点在本层的唯一层编码构成节点的编号,而当根节点没有父节点时,其编码为1;对于新***的节点n,当n作为叶节点的子节点***时,n的层编码为2;而当n作为非叶节点的孩子节点***时,分为最左***、中间***和最右***,根据该三种不同的情况由扩展字节进制编码动态***算法生成新的节点编码。
进一步地,每个子节点的扩展字节进制编码为父节点编码后接255作为段分隔符连接层编码,最左子节点的层编码为2,其他子节点的层编码为其左兄弟节点层编码加1。
进一步地,对于新***的节点n,当n作为非叶节点的最左子节点***时,n的层编码为:将n右兄弟节点的层编码在第一个非1节之后截断,并将最右节减1。
进一步地,对于新***的节点n,当n作为非叶节点的中间节点***时,n的层编码为:从左至右逐节比较n的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差大于1,将左兄弟节点层编码在此节加1并舍去其后所有节。
进一步地,对于新***的节点n,当n作为非叶节点的中间节点***时,n的层编码为:从左至右逐节比较n的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差等于1,并且右兄弟层编码没有结束,则将右兄弟节点层编码的这一节减1并舍去其后所有节;而如果左右兄弟节点的层编码在此节相差等于1并且左兄弟层编码没有结束,则将左兄弟节点层编码的下一节加1并舍去其后所有节。
进一步地,对于新***的节点n,当n作为非叶节点的最右子节点***时,n的层编码为n左兄弟节点层编码的第一节加1并舍去其他节。
本发明支持XML数据动态更新的编码方法,其能保持和其他节点之间的位置关系,且不会引起已有节点编码的改变。一方面提高了编码的效率,另一方面降低了编码的存储空间成本。
附图说明
图1是本发明静态扩展字节编码前缀编码示意图。
图2是本发明扩展字节编码动态编码分配示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例的描述中,为便于理解,首先作如下定义:
字节码:逻辑编码中每个字节码的取值范围为“0”,“1”,...“254”,“255”;物理编码中每个符号由8个二进制位即一个字节表示,分别为“00000000”,...“11111111”。为了不产生混淆,在本发明实施例中将十进制表示上为多位的一位字节码用中括号括起来,如[10][255]96是四位字节码“10”,“255”,“9”,“6”组成的一串编码。
节编码:节编码由除0和[255]以外的一位以上字节码构成,从左至右称为从高位到低位。
运算关系:加1(+1)运算,在最低位按整数加1运算处理,如果结果为[255]则将该位设为1并向高位进1;减1(-1)运算,其为加1(+1)运算的逆运算;大于(>)关系,设a是字节码,则a+1>a,并具有传递性质;小于(<)关系,设a是字节码,则a-1<a,并具有传递性质。
段编码:段编码由节分隔符0(二进制表示为“00000000”)连接的多个节组成。
本发明支持XML数据动态更新的编码方法,通过给XML树中的每个节点分配一个隐含位置关系的编码,就可以直接比较两个节点编码来确定它们之间的结构关系,其中,节点的编号是以父节点的编号为前缀,加上该节点在本层的唯一层编码组成;对于新***的节点n,当n作为叶节点m的子节点***时,n的层编码为2;而当n作为非叶节点m的孩子节点***时,分为最左***、中间***和最右***,根据不同的情况由扩展字节进制编码动态***算法生成一个新的节点编码,该编码不但能保持和其他节点之间的位置关系,又不会引起已有节点编码的改变。
当根节点没有父节点时,其编码为1;每个子节点的EBCL编码为父节点编码后接[255]作为段分隔符连接层编码,最左子节点的层编码为“2”,其他子节点的层编码为其左兄弟节点层编码加1。
对于新***的节点n,当n作为非叶节点m的子节点***时,最左***、中间***和最右***的几种情况如下:
当n作为非叶节点m的最左子节点***时,n的层编码为:将n右兄弟节点的层编码在第一个非“1”节之后截断,并将最右节减1,如果结果等于1则扩展一个新的节[254];
当n作为非叶节点m的中间节点***时,n的层编码为:从左至右逐节比较n的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差大于1,将左兄弟节点层编码在此节加1并舍去其后所有节;如果左右兄弟节点的层编码在此节相差等于1并且右兄弟层编码没有结束,将右兄弟节点层编码的这一节减1并舍去其后所有节;如果左右兄弟节点的层编码在此节相差等于1并且左兄弟层编码没有结束,将左兄弟节点层编码的下一节加1并舍去其后所有节;如果左右兄弟节点的层编码在此节相差等于1并且都已结束,则在左兄弟节点层编码后扩展一个新的节[254];
当n作为非叶节点m的最右子节点***时,n的层编码为n左兄弟节点层编码的第一节加1并舍去其他节。
在本发明实施例中,EBCL编码由段分隔符[255](二进制“11111111”)连接的多个段编码构成。段编码大小关系判断方法为:由左至右分节判断每个字节码的大小,但实际上由于节分隔符是0,所以可以直接按照二进制的字典序判断段编码的大小。而EBCL编码的大小关系判断方法为:由左至右分段判断每个段编码的大小。如:设有两个EBCL编码a和b,a和b的大小关系判定方法为从左至右比较a、b每个段编码ai、bi,如果ai<bi则a<b;如果ai>bi则a>b;如果ai==bi则继续向右比较直至a或b结束,若a先结束则a<b,若b先结束则b<a。如果一直到a和b结束都有ai==bi,则a==b。EBCL编码关系判定算 法如下:
在本发明实施例中,EBCL静态编码是在XML文档载入阶段为XML树中的每个节点赋予一个惟一的EBCL编码,用映射表示为:{XML节点|XML文档对应的XML树}→{EBCL编码}。其编码规则如下:根节点没有父节点,其编码为1;每个子节点的EBCL编码为父节点编码后接[255]作为段分隔符连接自编码,最左子节点的自编码为“2”,其他子节点的自编码为其左兄弟节点自编码加1。如图1所示,根节点一共有353个子节点,最左子节点的自编码为2,其余节点的自编码从左至右分别为:3,...,[253],[254],11,...,1[100]。
其中,静态EBCL前缀编码生成的算法如下:
输入已经编码的节点E,输出以E为根的子树编码。
XML动态性是指对XML文档的***、删除和更新操作的支持。由于XML文档的删除和更新操作不涉及XML节点编码的改变,因此对于XML树编码机制来说,动态性就是能支持XML节点的***。
新***节点时,按照节点***的位置可以分为左端***,中间***,右端***三种情况。由于***时父节点已知,故只需要根据其***位置计算相应的自编码,再和父节点编码连接就形成新节点的EBCL编码。按照***的类型可以分为单个节点***和子树***,在EBCL编码中,子树***可以转换为先***子树的根节点,再调用静态EBCL算法生成其他节点的编码。如图2所示,其示出了在最左节点之前,两个节点之间以及在最右节点之后***新节点的示例,其中虚线节点代表动态***的新节点。
左端***指在最左节点之前***一个新的节点,设最左节点的自编码为a,新节点自编码为从左至右分段扫描a,如果a有多个节,则只保留第一个非空节而将其他节舍去,这样可以使得编码长度最小;如果a只有一个节并且a>1,则新编码为a-1;如果a=2,新编码为10[254],这里使用[254]的目的是方便在 这个节点之前再***新节点。其中,左端***新节点的算法如下:
输入最左节点的自编码a,在自编码为a的节点前***一个新的节点,给新节点分配自编码b。
左节点编码 | 2070[23] | 2070[23] | 207 | 2 | 2 |
右节点编码 | 20908 | 208 | 208 | 207 | 202 |
新节点编码 | 208 | 2070[24] | 20702 | 202 | 20102 |
如上表所示为几种不同情况下中间***时生成新编码的示例。中间***,即在两个相邻的节点a和b之前***一个新的节点c,这需要从左至右比较a和b的每一节的大小。值得注意的是一个新节点是从2而不是1开始的,这是为了以后在这个新节点之前要再***节点时可以再次动态分配编码。在两个相邻节点之间***新节点的算法如下:
输入两个节点的自编码a、b,输出新节点c的自编码,其中,用a[i]表示a的第i节。
右端***指在最右节点之后***一个新的节点,设最右3子节点的自编码为a,最简单的方法就是在a的最后一个节加1,但为了使新节点自编码最短,应该在a的第一个非空节上加1,而把后面的其他节舍去。右端***新节点的算法如下:
输入最右兄弟节点的自编码a,在自编码为a的节点后***一个新的节点,给新节点分配自编码b。
insertAfter(a){
b=a的第一个非空节+1;
}
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种支持XML数据动态更新的编码方法,其特征在于:为XML树中的每个节点分配一个隐含位置关系的编码,以直接比较两个节点编码来确定它们之间的结构关系;以父节点的编号为前缀,加上该节点在本层的唯一层编码构成节点的编号,而当根节点没有父节点时,其编码为1;对于新***的节点n,当n作为叶节点的子节点***时,n的层编码为2;而当n作为非叶节点的孩子节点***时,分为最左***、中间***和最右***,根据该三种不同的情况由扩展字节进制编码动态***算法生成新的节点编码。
2.如权利要求1所述支持XML数据动态更新的编码方法,其特征在于:每个子节点的扩展字节进制编码为父节点编码后接255作为段分隔符连接层编码,最左子节点的层编码为2,其他子节点的层编码为其左兄弟节点层编码加1。
3.如权利要求2所述支持XML数据动态更新的编码方法,其特征在于:对于新***的节点n,当n作为非叶节点的最左子节点***时,n的层编码为:将n右兄弟节点的层编码在第一个非1节之后截断,并将最右节减1。
4.如权利要求2所述支持XML数据动态更新的编码方法,其特征在于:对于新***的节点n,当n作为非叶节点的中间节点***时,n的层编码为:从左至右逐节比较n的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差大于1,将左兄弟节点层编码在此节加1并舍去其后所有节。
5.如权利要求2所述支持XML数据动态更新的编码方法,其特征在于:对于新***的节点n,当n作为非叶节点的中间节点***时,n的层编码为:从左至右逐节比较n的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差等于1,并且右兄弟层编码没有结束,则将右兄弟节点层编码的这一节减1并舍去其后所有节;而如果左右兄弟节点的层编码在此节相差等于1并且左兄弟层编码没有结束,则将左兄弟节点层编码的下一节加1并舍去其后所有节。
6.如权利要求2所述支持XML数据动态更新的编码方法,其特征在于:对于新***的节点n,当n作为非叶节点的中间节点***时,n的层编码为:从左至右逐节比较n的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差等于1并且都已结束,则在左兄弟节点层编码后扩展一个新的节254。
7.如权利要求2所述支持XML数据动态更新的编码方法,其特征在于:对于新***的节点n,当n作为非叶节点的最右子节点***时,n的层编码为n左兄弟节点层编码的第一节加1并舍去其他节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110380643XA CN102446218A (zh) | 2011-11-25 | 2011-11-25 | 一种支持xml数据动态更新的编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110380643XA CN102446218A (zh) | 2011-11-25 | 2011-11-25 | 一种支持xml数据动态更新的编码方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102446218A true CN102446218A (zh) | 2012-05-09 |
Family
ID=46008714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110380643XA Pending CN102446218A (zh) | 2011-11-25 | 2011-11-25 | 一种支持xml数据动态更新的编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102446218A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506723A (zh) * | 2016-11-22 | 2017-03-15 | 防灾科技学院 | 一种用于树型网络的节点编制方法及装置 |
CN106874358A (zh) * | 2016-12-28 | 2017-06-20 | 曙光信息产业(北京)有限公司 | 一种文件管理方法和装置 |
CN110971340A (zh) * | 2019-10-17 | 2020-04-07 | 北京邮电大学 | 基于树状结构的灾情信息编、解码方法和装置 |
CN111353277A (zh) * | 2020-02-28 | 2020-06-30 | 北京京东振世信息技术有限公司 | 节点编码方法和装置以及确定节点从属关系的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853310A (zh) * | 2010-06-21 | 2010-10-06 | 北京大学 | 单次遍历树生成前后序编码的方法 |
CN102096706A (zh) * | 2011-01-05 | 2011-06-15 | 北京大学 | 一种变步长xml编码方法 |
-
2011
- 2011-11-25 CN CN201110380643XA patent/CN102446218A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853310A (zh) * | 2010-06-21 | 2010-10-06 | 北京大学 | 单次遍历树生成前后序编码的方法 |
CN102096706A (zh) * | 2011-01-05 | 2011-06-15 | 北京大学 | 一种变步长xml编码方法 |
Non-Patent Citations (1)
Title |
---|
YU SHENG ET AL.: "An Extended Byte Carry Labeling Scheme for Dynamic XML Data", 《INTERNATIONAL CONFERENCE ON ADVANCED IN CONTROL ENGINEERING AND INFORMATION SCIENCE》, 19 August 2011 (2011-08-19), pages 1 - 3 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506723A (zh) * | 2016-11-22 | 2017-03-15 | 防灾科技学院 | 一种用于树型网络的节点编制方法及装置 |
CN106506723B (zh) * | 2016-11-22 | 2021-11-19 | 防灾科技学院 | 一种用于树型网络的节点编制方法及装置 |
CN106874358A (zh) * | 2016-12-28 | 2017-06-20 | 曙光信息产业(北京)有限公司 | 一种文件管理方法和装置 |
CN110971340A (zh) * | 2019-10-17 | 2020-04-07 | 北京邮电大学 | 基于树状结构的灾情信息编、解码方法和装置 |
CN111353277A (zh) * | 2020-02-28 | 2020-06-30 | 北京京东振世信息技术有限公司 | 节点编码方法和装置以及确定节点从属关系的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102592160B (zh) | 一种面向短信的字符二维码编码方法和解码方法 | |
FI102425B (fi) | Menetelmä muistin toteuttamiseksi | |
CN106528647B (zh) | 一种基于cedar双数组字典树算法进行术语匹配的方法 | |
CN102750268A (zh) | 一种对象序列化方法、对象反序列化方法、装置及*** | |
CN102446218A (zh) | 一种支持xml数据动态更新的编码方法 | |
CN101902228B (zh) | 快速循环冗余校验编码方法及装置 | |
Abraham et al. | On space-stretch trade-offs: Lower bounds | |
CN102651026A (zh) | 通过预计算优化搜索引擎分词的方法及搜索引擎分词装置 | |
He et al. | A fast general methodology for information-theoretically optimal encodings of graphs | |
Gańczorz et al. | Improvements on Re-Pair grammar compressor | |
CN101520771A (zh) | 一种对词库压缩编码及解码的方法和*** | |
CN102325161A (zh) | 一种基于查询工作量估算的xml分片方法 | |
Sakamoto et al. | A space-saving approximation algorithm for grammar-based compression | |
CN104240747A (zh) | 一种多媒体数据获取的方法及装置 | |
CN104484337A (zh) | Xml文档的存储方法 | |
Lozano et al. | On the maximum common embedded subtree problem for ordered trees | |
CN103116654B (zh) | 一种xml数据节点编码压缩方法 | |
Afrati et al. | Anchor points algorithms for hamming and edit distance | |
Strothmann | The affix array data structure and its applications to RNA secondary structure analysis | |
Yasuhara et al. | An efficient language model using double-array structures | |
CN105938469A (zh) | 编码存储方法、文本存储数据结构以及文本压缩存储和统计输出方法 | |
CN102651795B (zh) | 游长缩减的二元序列压缩编码方法 | |
Qin et al. | Efficient XML query and update processing using a novel prime-based middle fraction labeling scheme | |
CN112395286B (zh) | 链式数据表连接方法、装置、设备及存储介质 | |
CN114385624A (zh) | 编码方法、编码查找方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120509 |