CN103049494B - 一种xml文档的表格存储方法及装置 - Google Patents
一种xml文档的表格存储方法及装置 Download PDFInfo
- Publication number
- CN103049494B CN103049494B CN201210523863.8A CN201210523863A CN103049494B CN 103049494 B CN103049494 B CN 103049494B CN 201210523863 A CN201210523863 A CN 201210523863A CN 103049494 B CN103049494 B CN 103049494B
- Authority
- CN
- China
- Prior art keywords
- node
- name
- path
- nodal
- entry
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
一种XML文档的表格存储方法及装置。在本发明一些可行的实施方式中,通过将XML文档中的节点名和节点属性名进行路径化处理,并将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,基于上述创新机制,实现了XML文档的表格存储,便于在表格中对XML文档的数据进行扩展、读取、搜索和管理。本发明还提供了相应的XML文档的表格存储装置。
Description
技术领域
本发明属于文档应用领域,具体涉及一种XML文档的表格存储方法及装置。
背景技术
当前在例如CRM(客户关系管理,customer relationship management,简称“CRM”)、OCS(在线计费系统,Online Charging System,简称“OCS”)和ESB(企业服务总线,enterprise service bus,简称“ESB”)等业务系统或一些XML处理工具等应用系统中广泛使用XML(可扩展标记语言,extensible markuplanguage,简称“XML”)并需要解析和存储XML文档,由于XML文档便于扩展、便于解析和业务处理,所以以XML文档的方式格式化数据或作为通信协议的情况普遍存在,也给业务系统扩展性、松耦合性等方面带来了很大的方便。
但是正因为XML文档自身可扩展性的特性,如能存储方便则应用会更广泛,但在表格存储如数据库表的存储方式中,如何存储XML文档是一个十分棘手的问题,一个方面,由于XML文档的数据太易于扩展,所以其整体大小不固定,很容易超出数据库单个字段的最大容量;另一方面,如果把整个XML文档都存储于一个字段中,可读性非常差,管理人员需要特殊的方式才能了解数据或数据分析;又一方面,很难与现有技术结合使用,特别是搜索、管理不方便,如在数据库中SQL(结构化查询语言,structured query language,简称“SQL”)语句很难深入到XML文档内部做数据的搜索、更新、管理等。
发明内容
本发明实施例提供一种XML文档的表格存储方法及装置,以期实现XML文档的表格存储,便于在表格中对XML文档数据进行搜索、更新和管理。
本发明第一方面提供一种XML文档的表格存储方法,可包括:
将XML文档加载到XML文档对象模型;
读取加载后的XML文档的节点信息,所述节点信息包括:节点名、节点值、节点属性名和节点属性值;
对所述读取的节点信息中的节点名和所述节点属性名进行路径化处理;
将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格。
在第一种可能的实施方式中,所述对所述读取的节点信息中的节点名和节点属性名进行路径化处理,包括:
依据根节点到所述节点的节点路径,对读取的节点的节点名进行路径化处理;
依据节点属性名与该节点属性名对应的路径化的节点名的关系,对所述节点属性名进行路径化处理。
结合第一方面或第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,包括:
将路径化的节点名和相应的节点值作为一个条目写入表格;
分别对应所述路径化的节点名和相应的节点值在表格中的相对位置,将所述路径化的节点名对应的每个路径化的节点属性名和相应的节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间。
结合第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述方法还包括:
判断所述表格中各条目的类别,并在所述各条目中写入相应的类别标识。
结合第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述方法还包括:
将属于同一个XML文档的条目以相同的文档标识进行标识,并将所述标识写入各条目。结合第一方面的第二种可能的实施方式,在第五种可能的实施方式中,所述方法还包括:
对属于同一个XML文档的所述条目以递增顺序编号,并将所述编号写入相应的条目。
本发明第二方面提供一种XML文档的表格存储装置,可包括:
加载单元,用于将XML文档加载到XML文档对象模型;
读取单元,用于读取加载后的XML文档的节点信息,所述节点信息包括:节点名、节点值、节点属性名和节点属性值;
处理单元,用于对所述读取的节点信息中的节点名和节点属性名进行路径化处理;
写入单元,用于将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格。
在第一种可能的实施方式中,所述处理单元还包括:
第一子处理单元,用于依据根节点到所述节点的节点路径,对读取的节点的节点名进行路径化处理;
第二子处理单元,用于依据节点属性名与该节点属性名对应的路径化的节点名的关系,对所述节点属性名进行路径化处理。
结合第二方面或第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述写入单元用于将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,具体为:
将路径化的节点名和相应的节点值作为一个条目写入表格;
分别对应所述路径化的节点名和相应的节点值在表格中的相对位置,将所述路径化的节点名对应的每个路径化的节点属性名和相应的节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间。
结合第二方面的第二种可能的实施方式,在第三种可能的实施方式中,所述装置还包括:
标识单元,用于判断所述表格中各条目的类别,并在所述各条目中写入相应的类别标识。结合第二方面的第三种可能的实施方式,在第四种可能的实施方式中,
标识单元,还用于将属于同一个XML文档的条目以相同的文档标识进行标识,并将所述标识写入各条目。
结合第二方面的第二种可能的实施方式,在第五种可能的实施方式中,所述装置还包括:
编号单元,用于对属于同一个XML文档的所述条目以递增顺序编号,并将所述编号写入相应的条目。
由上可见,在本发明一些可行的实施方式中,通过将XML文档中的节点名和节点属性名进行路径化处理,并将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,基于上述创新机制,实现了XML文档的表格存储,便于在表格中对XML文档的数据进行扩展、读取、搜索和管理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的XML文档的表格存储方法的应用环境示意图;
图2为本发明一种XML文档的表格存储方法的一个实施例的方法流程图;
图3为对图2所示实施例的XML文档的表格存储方法的进一步细化的方法流程图;
图4为本发明一种XML文档的表格存储装置的一个实施例的结构示意图;
图5为对图4所示实施例的XML文档的表格存储装置的进一步细化的结构示意图;
图6为本发明另一个实施例提供的XML文档的表格存储装置的硬件架构图。
具体实施方式
本发明实施例提供一种XML文档的表格存储方法及装置,以期实现XML文档的表格存储,便于在表格中对XML文档数据进行扩展、读取、搜索和管理。
为使本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过具体的实施例,分别进行详细的说明。
如图1所示,图1显示的是本发明实施例提供的XML文档的表格存储方法的应用环境示意图,采用通用计算机系统结构。
计算机系统可具体是基于处理器的计算机,如通用个人计算机(PC),便携式设备如平板计算机,或智能手机。计算机系统包括总线,处理器,存储器,通信接口,输入设备和输出设备。总线可包括一通路,在计算机各个部件之间传送信息。处理器可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integratedcircuit,简称“ASIC”),或一个或多个用于控制本发明方案程序执行的集成电路。计算机系统还包括一个或多个存储器,可以是只读存储器(read-only memory,简称“ROM”)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,简称“RAM”)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器通过总线与处理器相连接。
输入设备可包括一种装置,以接收用户输入的数据和信息,例如键盘,鼠标、摄像头,扫描仪,光笔,语音输入装置,触摸屏等。输出设备可包括一种装置,以允许输出信息给用户,包括显示屏,打印机,扬声器等。计算机系统还包括一个通信接口,使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等.
存储器,如RAM,保存有执行本发明方案的程序,还可以保存有操作系统和其他应用程序。执行本发明方案的程序代码保存在存储器中,并由处理器来控制执行。
图2为本发明一种XML文档的表格存储方法的一个实施例的方法流程图。如图2所示,该方法包括:
步骤S101,将XML文档加载到XML文档对象模型。
其中,XML文档可以为XML文件或XML报文。XML文档中包括以下节点信息:XML节点,是指从(且包括)开始标签直到(且包括)结束标签的部分;XML节点名,是指XML节点的标签值;XML节点值,是指开始标签(不包括)和结束标签(不包括)之间的内容(不包含子节点);XML节点属性,是指XML开始标签内的键值对(属性值必须被引号包围);XML节点属性名,是指XML开始标签内的键值对的键名;XML节点属性值,是指XML开始标签内的键值对的值,由于属性值必须被引号包围,所以属性值不包含两边的引号。
DOM(文档对象模型,Document Object Model,简称“DOM”)定义了访问和操作XML文档的标准方法,在DOM的树结构中会呈现XML文档中的节点名、节点属性名、节点值和节点属性值这些节点信息。
本发明实施例中,计算机内存调用DOM,并将XML文档加载到DOM中,再执行后续的操作。
步骤S102,读取加载后的XML文档的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。
具体地,根据DOM的树结构读取加载后的XML文档的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。计算机的内存可以一次性全部读取加载后的XML文档的所有节点的节点信息,也可以一次读取部分节点的节点信息。
步骤S103,对读取的节点信息中的节点名和节点属性名进行路径化处理。
对读取的节点信息中的节点名和节点属性名进行路径化处理,形成路径化的节点名和节点属性名,具体为:依据根节点到该节点的节点路径,对该节点的节点名进行路径化处理,形成路径化的节点名,以及依据节点属性名与该节点属性名对应的路径化的节点名的关系,对该节点属性名进行路径化处理,形成路径化的节点属性名。
对节点名和节点属性名的路径化处理将在后续实施例中结合实例进行详细说明。
步骤S104,将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格。
将所有路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,从而完成XML文档的表格存储。
根据本发明实施例提供的XML文档的表格存储方法,通过将XML文档中的节点名和节点属性名进行路径化处理,并将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,在使用表格存储的XML文档时,如需对表格中的数据进行扩展或更新时,可以方便地将路径化的节点名和节点属性名以及相应的节点值和节点属性值插入表格,从而保证XML文档的可扩展性;同时,由于路径化的节点名和节点属性名以及相应的节点值和节点属性值不是存储于一个字段中,可以避免扩展XML文档的数据时超出数据库单个字段的最大容量,也便于数据的读取、搜索和管理。基于上述创新机制,实现了XML文档的表格存储,便于在表格中对XML文档的数据进行扩展、读取、搜索和管理。
图3为对图2所示实施例的XML文档的表格存储方法的进一步细化的方法流程图。
下面结合一个XML文档样例对图3所示的XML文档的表格存储方法进行详细描述。该XML文档样例如表1所示:
表1 XML文档样例
如图3所示,该方法包括:
步骤S201,将XML文档加载到XML文档对象模型。
本发明实施例中,计算机内存调用DOM,并将XML文档加载到DOM中。例如,将表1所示的XML文档样例加载到DOM中,在DOM的树结构中会呈现该XML文档中的节点名、节点属性名、节点值和节点属性值,基于此加载后的XML文档执行后续的操作。
步骤S202,读取加载后的XML文档的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。
具体地,根据DOM的树结构读取加载后的XML文档的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。计算机的内存可以一次性全部读取加载后的XML文档的所有节点的节点信息,也可以一次读取部分节点的节点信息。
步骤S203,依据根节点到该节点的节点路径,对读取的节点的节点名进行路径化处理。
在本步骤中,对读取的节点信息中的节点名进行路径化处理。具体地,根据节点在加载后的XML文档中的位置,遍历从根节点到该节点依次经过的所有节点,将该节点名表示为从根节点到该节点之间依次以分隔符分隔的节点路径。根节点和XML文档的XML节点(描述XML文档版本及编码等属性的节点)前不需要分隔符,节点路径中间不加空格。
在本发明一个实施例中,以“/”符号为分隔符描述节点路径,其中的每个节点从属于该节点左边紧挨(由“/”分隔的)的节点,如若左边无“/”符号,则本节点名对应的节点是XML文档的根节点。
例如,对表1的XML文档样例中的节点名parent1、parent1的children以及parent2的children进行路径化处理后得到路径化的节点名如表2所示:
表2节点名路径化样例
parent1路径 | root/parent 1 |
children(parent 1的children)路径 | root/parent 1/children |
children(parent2的children)路径 | root/parent2/children |
步骤S204,依据节点属性名与该节点属性名对应的路径化的节点名的关系,对该节点属性名进行路径化处理。
具体地,节点属性名路径可表示为以分隔符相连的节点属性名和该节点属性名对应的路径化的节点名。
在本发明一个实施例中,以“@”作为分隔符,以“节点属性名@路径化的节点名”的格式对节点属性名进行路径化处理。
例如,对表1的XML文档样例中的节点属性名version、parent1的子节点children的属性name进行路径化处理后得到路径化的节点属性名如表3所示:
表3节点属性名路径化样例
步骤S205,将路径化的节点名和相应的节点值作为一个条目写入表格。
在本步骤中将每个路径化的节点名和其节点值作为一个条目依次写入表格。具体地,节点名和其节点值作为一个条目可以写入表格的一列中的两个字段,也可以写入表格的一行中的两个字段。
例如,将表1的XML文档样例中的parent1、parent1的children的路径化的节点名及其节点值分别作为一个条目写入表格后如表4所示:
表4路径化的节点名及其节点值写入表格样例
root/parent1 | |
root/parent1/children | children belong to parent1 |
如表4所示,parent1的路径化的节点名及其节点值作为一个条目写入表4所示表格的一行,且路径化的节点名parent1及其节点值分别写入该行的一个字段;parent1的children的路径化的节点名及其节点值作为另一个条目写入表4所示表格的另一行,且路径化的节点名parent1的children及其节点值分别写入该行的一个字段。
步骤S206,分别对应路径化的节点名和相应的节点值在表格中的相对位置,将该路径化的节点名对应的每个路径化的节点属性名和节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间。
在本步骤中,分别对应路径化的节点名和相应的节点值在表格中的相对位置,将该路径化的节点名对应的每个路径化的节点属性名和相应的节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间。具体地,该路径化的节点名对应的每个路径化的节点属性名所在条目应该紧邻该节点的路径化的节点名所在条目。如果路径化的节点和其节点值作为一个条目写入表格的一列,则路径化的节点属性和其节点属性值作为一个条目应该紧邻路径化的节点名所在列对应写在表格的另一列;如果路径化的节点名和其节点值作为一个条目写入表格的一行,则路径化的节点属性名和其节点属性值作为一个条目应该紧邻路径化的节点名所在行对应写在表格的另一行。
例如,将表1的XML文档样例中的parent1、parent1的children的路径化的节点名对应的每个路径化的节点属性名及其节点属性值写入表格后如表5所示:
表5路径化的节点属性名及其节点属性值写入表格样例
root/parent1 | |
name@root/parent1 | parent1name |
remark@root/parent1 | parent1remark |
root/parent1/children | children belong to parent1 |
name@root/parent1/children | Text |
remark@root/parent1/child ren | Text |
如表5所示,紧邻parent1的路径化的节点名所在条目,parent1路径化的节点名对应的两个路径化的节点属性名及其节点属性值分别作为一个条目写入表格的一行,且路径化的节点属性名及其节点属性值分别写入该行的两个字段,写完parent1的路径化的节点名和节点属性名的条目后,再根据同样的步骤将parent1的children的路径化的节点名和节点属性名分别写入表格。
表6为对XML文档完成表格存储的表格样例的示意图,对表1的XML文档样例完成步骤S205和S206,对应如表6的XML文档的表格样例中的第三列和第五列所示。第三列对应路径化的节点名和路径化的节点属性名,第五列对应节点值和节点属性值。
步骤207,判断表格中各条目的类别,并在条目中写入相应的类别标识。
在本发明实施例中,表格中的条目有两种类型,分别是节点条目和节点属性条目。在一个实施例中,引入node和attribute两个标识来区分两这类条目,其中node用来表示该条目是节点,attribute用来表示该条目是节点属性。如表6中的第四列所示,对每一条目的类型用上述两个标识进行了表示。
步骤S208,将属于同一个XML文档的条目以相同的文档标识进行标识,并将该标识写入各条目。
在同一个表格中存储的可能不止一个XML文档的数据,将属于同一个XML文档的条目以相同的文档标识进行标识,如表6中的第一列,用数值“1”对该XML文档的每个条目进行标识,对另一个XML文档可以以数值“2”进行标识。标识可由用户自行设置,可以为数值、符号等。将该标识写入条目,形成如表6中的第一列。
通过对属于同一个XML文档的条目以相同的文档标识进行标识,在对表格进行搜索时,可方便地知道该条目属于哪个XML文档。
步骤S209,对属于同一个XML文档的条目以递增顺序编号,并将编号写入相应的条目。
对每一个XML文档的各个条目以递增顺序编号,如表6中的第二列,从0开始递增,用阿拉伯数字对每个条目进行递增编号。
对每个路径化的节点名和路径化的节点属性名的条目以递增顺序编号,需注意的是,路径化的节点名条目的编号和对应该条目的路径化的节点属性名条目的编号必须是紧接的,即本路径化的节点名条目和对应该条目的路径化的节点属性名条目之间不应该有其它路径化的节点名条目或其它路径化的节点属性名条目。
应当注意的是,上述步骤S207-S209之间没有特定的时序,本发明实施例不限制各个步骤之间的执行顺序。
通过以上步骤,对表1中的XML文档进行表格化存储后形成如表6所示的XML文档的表格。
表6XML文档的表格样例
xmlid | sn | element | type | value |
1 | 0 | xml | node | |
1 | 1 | version@xml | attribute | 1.0 |
1 | 2 | encoding@xml | attribute | UTF-8 |
1 | 3 | root | node | |
1 | 4 | xmlns:xsi@root | attribute | http://www.w3.org/2001/XMLSchema-instance |
1 | 5 | root/parent1 | node | |
1 | 6 | name@root/parent1 | attribute | parent1name |
1 | 7 | remark@root/parent1 | attribute | parent1remark |
1 | 8 | root/parent1/children | node | children belong to parent1 |
1 | 9 | name@root/parent1/children | attribute | Text |
1 | 10 | remark@root/parent1/children | attribute | Text |
1 | 11 | root/parent2 | node | |
1 | 12 | name@root/parent2 | attribute | parent2name |
1 | 13 | root/parent2/children | node | children belong to parent2 |
1 | 14 | name@root/parent2/children | attribute | Text |
1 | 15 | remark@root/parent2/children | attribute | Text |
1 | 16 | root/parent3 | node | |
1 | 17 | name@root/parent3 | attribute | parent3name |
1 | 18 | root/parent3/children | node | children belong to parent3 |
1 | 19 | name@root/parent3/children | attribute | Text |
1 | 20 | remark@root/parent3/children | attribute | Text |
1 | 21 | root/parent3 | node | |
1 | 22 | name@root/parent3 | attribute | parent3name |
1 | 23 | root/parent3/children | node | children belong to parent3 |
1 | 24 | name@root/parent3/children | attribute | Text |
1 | 25 | remark@root/parent3/children | attribute | Text |
根据本发明提供的一种XML文档的表格存储方法的实施例,在本发明一些可行的实施方式中,通过将XML文档中的节点名和节点属性名进行路径化处理,并将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,还在表格中体现路径化的节点名和路径化的节点属性名的类型,对表格中的条目进行编号和标识,基于上述创新机制,实现了XML文档的表格存储,便于在表格中对XML文档的数据进行搜索、更新和管理。
图4为本发明一种XML文档的表格存储装置的一个实施例的结构示意图。如图4所示,该装置包括:
加载单元101,用于将XML文档加载到XML文档对象模型。
XML文档中包括以下节点信息:XML节点,是指从(且包括)开始标签直到(且包括)结束标签的部分;XML节点名,是指XML节点的标签值;XML节点值,是指开始标签(不包括)和结束标签(不包括)之间的内容(不包含子节点);XML节点属性,是指XML开始标签内的键值对(属性值必须被引号包围);XML节点属性名,是指XML开始标签内的键值对的键名;XML节点属性值,是指XML开始标签内的键值对的值,由于属性值必须被引号包围,所以值不包含值两边的引号。
DOM定义了访问和操作XML文档的标准方法,在DOM的树结构中会呈现XML文档中的节点名、节点属性名、节点值和节点属性值这些节点信息。
本发明实施例中,计算机内存调用DOM,加载单元101将XML文档加载到DOM中。
读取单元102,用于读取加载后的XML文档的的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。
具体地,根据DOM的树结构,读取单元102读取加载后的XML文档的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。可以一次性全部读取加载后的XML文档的所有节点的节点信息,也可以一次读取部分节点的节点信息。
处理单元103,用于对读取的节点信息中的节点名和节点属性名进行路径化处理。
处理单元103对读取的节点信息中的节点名和节点属性名进行路径化处理,形成路径化的节点名和节点属性名,具体为:依据根节点到该节点的节点路径,对该节点的节点名进行路径化处理,形成路径化的节点名,以及依据节点属性名与该节点属性名对应的路径化的节点名的关系,对该节点属性名进行路径化处理,形成路径化的节点属性名。
写入单元104,用于将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格。
写入单元104将所有路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,从而完成XML文档的表格存储。
根据本发明实施例提供的XML文档的表格存储装置,通过将XML文档中的节点名和节点属性名进行路径化处理,并将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,在使用表格存储的XML文档时,如需对表格中的数据进行扩展或更新时,可以方便地将路径化的节点名和节点属性名以及相应的节点值和节点属性值插入表格,从而保证XML文档的可扩展性;同时,由于路径化的节点名和节点属性名以及相应的节点值和节点属性值不是存储于一个字段中,可以避免扩展XML文档的数据时超出数据库单个字段的最大容量,也便于数据的读取、搜索和管理。基于上述创新机制,实现了XML文档的表格存储,便于在表格中对XML文档的数据进行扩展、读取、搜索和管理。
图5为对图4所示实施例的XML文档的表格存储装置的进一步细化的结构示意图。如图5所示,该装置包括:
加载单元101,用于将XML文档加载到XML文档对象模型。
本发明实施例中,计算机内存调用DOM,加载单元101将XML文档加载到DOM中。例如,将表1所示的XML文档样例加载到DOM中,在DOM的树结构中会呈现该XML文档中的节点名、节点属性名、节点值和节点属性值。
读取单元102,用于读取加载后的XML文档的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。
具体地,根据DOM的树结构读取记载后的XML文档的节点信息,该节点信息包括:节点名、节点值、节点属性名和节点属性值。可以一次性全部读取加载后的XML文档的所有节点的节点信息,也可以一次读取部分节点的节点信息。
处理单元103,用于对读取的节点信息中的节点名和节点属性名进行路径化处理。该处理单元103包括第一子处理单元105和第二子处理单元106。
第一子处理单元105,用于依据根节点到所述节点的节点路径,对读取的节点的节点名进行路径化处理。
在本实施例中,根据节点在加载后的XML文档中的位置,遍历从根节点到该节点依次经过的所有节点,将该节点名表示为从根节点到该节点之间依次以分隔符分隔的节点路径。根节点和XML的XML节点(描述XML文档版本及编码等属性的节点)前不需要分隔符,节点路径中间不加空格。
在本发明一个实施例中,以“/”符号为分隔符描述节点路径,其中的每个节点从属于该节点左边紧挨(由“/”分隔的)的节点,如若左边无“/”符号,则本节点名对应的节点是XML文档的根节点。
例如,对表1的XML文档样例中的节点名parent1、parent1的children以及parent2的children进行路径化处理后得到路径化的节点名如表2所示。
第二子处理单元106,用于依据节点属性名与该节点属性名对应的路径化的节点名的关系,对该节点属性名进行路径化处理。
具体地,节点属性名路径可表示为以分隔符相连的节点属性名和该节点属性名对应的路径化的节点名。
在本发明一个实施例中,以“@”作为分隔符,以“节点属性名@路径化的节点名”的格式对节点属性名进行路径化处理。
例如,对表1的XML文档样例中的节点属性名version、parent1的子节点children的属性name进行路径化处理后得到路径化的节点属性名如表3所示。
写入单元104,用于将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,具体为:将路径化的节点名和相应的节点值作为一个条目写入表格,分别对应路径化的节点名和相应的节点值在表格中的相对位置,将该路径化的节点名对应的每个路径化的节点属性名和节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间。
具体地,节点名和其节点值作为一个条目可以写入表格的一列中的两个字段,也可以写入表格的一行中的两个字段。
例如,将表1的XML文档样例中的parent1、parent1的children的路径化的节点名及其节点值分别作为一个条目写入表格后如表4所示。
如表4所示,parent1的路径化的节点名及其节点值作为一个条目写入表4所示表格的一行,且路径化的节点名parent1及其节点值分别写入该行的一个字段;parent1的children的路径化的节点名及其节点值作为另一个条目写入表4所示表格的另一行,且路径化的节点名parent1的children及其节点值分别写入该行的一个字段。
分别对应路径化的节点名和相应的节点值在表格中的相对位置,将该路径化的节点名对应的每个路径化的节点属性名和相应的节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间。具体地,该路径化的节点名对应的每个路径化的节点属性名所在条目应该紧邻该节点的路径化的节点名所在条目。如果路径化的节点和其节点值作为一个条目写入表格的一列,则路径化的节点属性和其节点属性值作为一个条目应该紧邻路径化的节点名所在列对应写在表格的另一列;如果路径化的节点名和其节点值作为一个条目写入表格的一行,则路径化的节点属性名和其节点属性值作为一个条目应该紧邻路径化的节点名所在行对应写在表格的另一行。
例如,将表1的XML文档样例中的parent1、parent1的children的路径化的节点名对应的每个路径化的节点属性名及其节点属性值写入表格后如表5所示。
标识单元107,用于判断表格中各条目的类别,并在各条目中写入相应的类别标识。
在本发明实施例中,表格中的条目有两种类型,分别是节点条目和节点属性条目。在一个实施例中,引入node和attribute两个标识来区分两这类条目,其中node用来表示该条目是节点,attribute用来表示该条目是节点属性。如表6中的第四列所示,对每一条目的类型用上述两个标识进行了表示。
标识单元107,还用于将属于同一个XML文档的条目以相同的文档标识进行标识,并将该标识写入各条目。
表格中存储的可能不止一个XML文档的数据,将属于同一个XML文档的条目以相同的文档标识进行标识,如表6中的第一列,用数值“1”对该XML文档的每个条目进行标识,对另一个XML文档可以以数值“2”进行标识。标识可由用户自行设置,可以为数值、符号等。将该标识写入条目,形成如表6中的第一列。
通过对属于同一个XML文档的条目以相同的文档标识进行标识,在对表格进行搜索时,可方便地知道该条目属于哪个XML文档。
编号单元108,用于对属于同一个XML文档的条目以递增顺序编号,并将编号写入相应的条目。
对每一个XML文档的各个条目以递增顺序编号,如表4中的第二列,从0开始递增,用阿拉伯数字对每个条目进行递增编号。将编号写入相应的条目,形成如表6中的第二列。
对每个路径化的节点名和路径化的节点属性名的条目以递增顺序编号,需注意的是,路径化的节点名条目的编号和对应该条目的路径化的节点属性名条目的编号必须是紧接的,即本路径化的节点名条目和对应该条目的路径化的节点属性名条目之间不应该有其它路径化的节点名条目或其它路径化的节点属性名条目。
最后,对表1中的XML文档进行表格化存储后形成如表6所示的XML文档的表格。
根据本发明提供的一种XML文档的表格存储装置的实施例,在本发明一些可行的实施方式中,通过将XML文档中的节点名和节点属性名进行路径化处理,并将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,还在表格中体现路径化的节点名和路径化的节点属性名的类型,对表格中的条目进行编号和标识,基于上述创新机制,实现了XML文档的表格存储,便于在表格中对XML文档的数据进行搜索、更新和管理。
图6描述了本发明另一个实施例提供的XML文档的表格存储装置的硬件架构图,包括至少一个处理器401(例如CPU),至少一个网络接口402或者其他通信接口,存储器403,和至少一个通信总线404,用于实现这些装置之间的连接通信。处理器401用于执行存储器403中存储的可执行模块,例如计算机程序。存储器403可能包含高速随机存取存储器(RAM:RandomAccess Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口402(可以是有线或者无线)实现该系统网关与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器403存储了程序指令,程序指令可以被处理器401执行,其中,程序指令包括加载单元101、读取单元102、处理单元103和写入单元104,其中,各单元的具体实现参见图4所揭示的相应单元,这里不再累述。
本发明实施例提供的XML文档的表格存储装置,加载单元将用于将XML文档加载到XML文档对象模型,读取单元将用于读取加载后的XML文档的节点信息,处理单元将用于对读取的节点信息中的节点名和节点属性名进行路径化处理,写入单元将用于将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,便于在表格中对XML文档的数据进行扩展、读取、搜索和管理。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(CD)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护层级之内。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护层级。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护层级之内。
Claims (8)
1.一种XML文档的表格存储方法,其特征在于,包括:
将XML文档加载到XML文档对象模型;
读取加载后的XML文档的节点信息,所述节点信息包括:节点名、节点值、节点属性名和节点属性值;
对所述读取的节点信息中的节点名和节点属性名进行路径化处理;
将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格;
对属于同一个XML文档的条目以递增顺序编号,并将所述编号写入相应的条目;
所述将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,包括:
将路径化的节点名和相应的节点值作为一个条目写入表格的一行中的两个字段;
分别对应所述路径化的节点名和相应的节点值在表格中的相对位置,将所述路径化的节点名对应的每个路径化的节点属性名和相应的节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间,且所述路径化的节点属性名和相应的节点属性值分别写入该行的两个字段。
2.如权利要求1所述的方法,其特征在于,所述对所述读取的节点信息中的节点名和节点属性名进行路径化处理,包括:
依据根节点到所述节点的节点路径,对读取的节点的节点名进行路径化处理;
依据节点属性名与该节点属性名对应的路径化的节点名的关系,对所述节点属性名进行路径化处理。
3.如权利要求1或2所述的方法,其特征在于,还包括:
判断所述表格中各条目的类别,并在所述各条目中写入相应的类别标识。
4.如权利要求3所述的方法,其特征在于,还包括:
将属于同一个XML文档的条目以相同的文档标识进行标识,并将所述标识写入各条目。
5.一种XML文档的表格存储装置,其特征在于,包括:
加载单元,用于将XML文档加载到XML文档对象模型;
读取单元,用于读取加载后的XML文档的节点信息,所述节点信息包括:节点名、节点值、节点属性名和节点属性值;
处理单元,用于对所述读取的节点信息中的节点名和节点属性名进行路径化处理;
写入单元,用于将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格;
编号单元,用于对属于同一个XML文档的条目以递增顺序编号,并将所述编号写入相应的条目;
所述写入单元用于将路径化的节点名和节点属性名以及相应的节点值和节点属性值写入表格,具体为:
将路径化的节点名和相应的节点值作为一个条目写入表格的一行中的两个字段;
分别对应所述路径化的节点名和相应的节点值在表格中的相对位置,将所述路径化的节点名对应的每个路径化的节点属性名和相应的节点属性值作为一个条目写入表格中该节点的路径化的节点名所在条目与另一个节点的路径化的节点名所在条目之间,且所述路径化的节点属性名和相应的节点属性值分别写入该行的两个字段。
6.如权利要求5所述的装置,其特征在于,所述处理单元还包括:
第一子处理单元,用于依据根节点到所述节点的节点路径,对读取的节点的节点名进行路径化处理;
第二子处理单元,用于依据节点属性名与该节点属性名对应的路径化的节点名的关系,对所述节点属性名进行路径化处理。
7.如权利要求5或6所述的装置,其特征在于,还包括:
标识单元,用于判断所述表格中各条目的类别,并在所述各条目中写入相应的类别标识。
8.如权利要求7所述的装置,其特征在于,
标识单元,还用于将属于同一个XML文档的条目以相同的文档标识进行标识,并将所述标识写入各条目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210523863.8A CN103049494B (zh) | 2012-12-07 | 2012-12-07 | 一种xml文档的表格存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210523863.8A CN103049494B (zh) | 2012-12-07 | 2012-12-07 | 一种xml文档的表格存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049494A CN103049494A (zh) | 2013-04-17 |
CN103049494B true CN103049494B (zh) | 2017-05-24 |
Family
ID=48062135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210523863.8A Active CN103049494B (zh) | 2012-12-07 | 2012-12-07 | 一种xml文档的表格存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049494B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101974341B1 (ko) * | 2014-01-23 | 2019-05-02 | 한화정밀기계 주식회사 | 계층적 데이터 분석 방법 및 그 프로그램이 기록된 기록 매체 |
CN104850591B (zh) * | 2015-04-24 | 2019-03-19 | 百度在线网络技术(北京)有限公司 | 一种数据的转换存储方法及装置 |
CN110222236B (zh) * | 2016-06-06 | 2021-05-04 | 福建榕基软件股份有限公司 | Xml报文模板的生成及更新方法及其系统 |
CN106599280B (zh) * | 2016-12-23 | 2019-11-22 | 北京奇虎科技有限公司 | 确定网页节点路径信息的方法及装置 |
CN108334560B (zh) * | 2018-01-03 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种信息获取方法及相关设备 |
CN110632878B (zh) * | 2019-10-08 | 2022-06-28 | 上海宝阶智能科技有限公司 | 一种异构嵌入式表格化处理及执行动作流程的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719156A (zh) * | 2009-12-30 | 2010-06-02 | 南开大学 | 一种在关系型数据库中无缝集成纯xml查询引擎的系统 |
CN102768674A (zh) * | 2012-06-12 | 2012-11-07 | 上海方正数字出版技术有限公司 | 一种基于路径结构的xml数据存储方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436779B2 (en) * | 2006-11-17 | 2016-09-06 | Oracle International Corporation | Techniques of efficient XML query using combination of XML table index and path/value index |
-
2012
- 2012-12-07 CN CN201210523863.8A patent/CN103049494B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719156A (zh) * | 2009-12-30 | 2010-06-02 | 南开大学 | 一种在关系型数据库中无缝集成纯xml查询引擎的系统 |
CN102768674A (zh) * | 2012-06-12 | 2012-11-07 | 上海方正数字出版技术有限公司 | 一种基于路径结构的xml数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103049494A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049494B (zh) | 一种xml文档的表格存储方法及装置 | |
US11714792B2 (en) | Creating data in a data store using a dynamic ontology | |
Bynum et al. | Scripting custom workflows | |
US8959428B2 (en) | Method and apparatus for generating an integrated view of multiple databases | |
US8812411B2 (en) | Domains for knowledge-based data quality solution | |
US20080120257A1 (en) | Automatic online form filling using semantic inference | |
US20180144061A1 (en) | Edge store designs for graph databases | |
US20070005657A1 (en) | Methods and apparatus for processing XML updates as queries | |
CN109933311A (zh) | 一种信息系统创建方法及相关装置 | |
US20200401630A1 (en) | Composite index on hierarchical nodes in the hierarchical data model within a case model | |
US9292544B2 (en) | XBRL flat table mapping system and method | |
US20150178263A1 (en) | System and Method for Constructing Markup Language Templates and Input Data Structure Specifications | |
US11789940B2 (en) | Natural language interface to databases | |
US10445370B2 (en) | Compound indexes for graph databases | |
CN107330014B (zh) | 一种数据表的创建方法与设备 | |
CN104750727A (zh) | 一种列式内存存储查询装置及列式内存存储查询方法 | |
CN101930455A (zh) | 一种结构化数据交换方法 | |
CN109242458A (zh) | 基于区块链的信息管理方法及相关设备 | |
Barrasa et al. | Building Knowledge Graphs | |
US7263656B2 (en) | Method and device for scheduling, generating and processing a document comprising blocks of information | |
US20180144060A1 (en) | Processing deleted edges in graph databases | |
US8719693B2 (en) | Method for storing localized XML document values | |
CN113721889A (zh) | 需求追踪关系构建方法、装置及计算机可读存储介质 | |
Kaufmann et al. | Database Modeling | |
CN113792048B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |