用于树型结构文件的数据查找方法

文档序号:6557659阅读:149来源:国知局
专利名称:用于树型结构文件的数据查找方法
技术领域
本发明涉及用于树型结构文件的数据查找方法,特别是一种根据索引文件对树型结构文件中存储的数据进行查找的方法。
背景技术
在数据处理相关工作中,存在着大量的树型结构文件,即以树型结构为主体结构进行存储的文件,包括文件中出现其它辅助结构如文件头、尾等说明块,但主体结构为树型的情况。基于标准通用标记语言(StandardGeneralized Markup Language,简称SGML)建立的可扩展标记语言(eXtensible Markup Language,简称XML)编写的XML文件是典型的树型结构文件,此外HTML(Hypertext Markup Language,超文本链接标示语言)文件、RTF(Rich Text Format)文件等都为树型结构的文件。树型结构文件具有结构清晰,易解析等特点,但与此同时,也存在一些缺陷,即对数据进行随机查找很不方便。
例如,格式正规的XML文件,可视为树状结构组成,有且仅有一个根节点。XML采用“<>”所括起的标记,来界定数据的主要成分“元素”。如果要在XML文件中查找某个元素,就必须通过XML解析器将XML文件的数据构建成树结构,然后遍历树上的节点才能够获得,并且只有通过该元素在树结构中的层次关系才能够确定此元素在数据结构中的位置。一个XML文件如下所示<文档><节>
<段落>
送别
</段落>
<段落>
下马饮君酒,问君何所之?</段落>
</节>
<节>
<段落>
君言不得意,归卧南山陲。
</段落>
<段落>
但去莫复问,白云无尽时。
</段落>
</节></文档>
如果在这篇文件中查找获取第二节第一段的数据,则先要将该文件构建树结构,确定第二节第一段落的位置,即顺序找到第二节,然后在这节中找到第一段落,这样才能找到这个段落的内容“但去莫复问,白云无尽时。”。该查找方式及为不便。HTML、RTF等其它各类树型结构的文件均存在此类问题。

发明内容
本发明的目的在于针对现有技术存在的缺陷,提供针对树型结构文件的一种数据获取方法。文件通过标识信息获取对应的数据,可在不将树型文件载入内部数据结构的情况下,即未将文件数据构建为树型数据结构的情况下,以文本形式解析树型文件,快速获取数据,即开档或不开档情况均可快速定位并获取数据。
为了实现上述目的,本发明提供了一种用于树型结构文件的数据获取方法,该方法,包括以下步骤步骤1、数据查找程序收到数据查找命令后,从该命令中提取待查找数据的标识信息;步骤2、数据查找程序在索引文件中查找该标识信息,获得该标识信息对应的位置参数;步骤3、根据所述位置参数从树型结构文件中获取数据。
该方法还可包括建立所述索引文件的步骤;可在存储所述树型结构文件时建立所述索引文件;判断是否存在所述树型结构文件的索引文件,若存在,则对该索引文件进行更新,否则,建立索引文件。
建立索引文件的步骤可具体为步骤A1、对该树型结构文件进行遍历,根据预先设定的规则为数据分配唯一的标识信息,并计算数据的位置参数;步骤A2、以标识信息为索引,以标识信息对应的位置参数为值生成索引文件。或具体为步骤B1、根据预先设定的规则为数据分配唯一的标识信息,并存储于所述树型结构文件中;步骤B2、对该树型结构文件进行遍历,收集文件中的标识信息以及标识信息所指内容的位置信息;步骤B3、以标识信息为索引,以标识信息对应的位置参数为值生成索引文件,且生成的索引文件可以为独立的文件,存放于树型结构文件相同目录中或其它位置,也可作为树型结构文件的一个组成部分,存储在树型结构文件中。存储于树型结构文件的索引文件与独立的索引文件均可通过上述的建立索引文件的方法建立。可将表明索引文件与树型结构文件关联关系的关联信息存储于索引文件中,通过该关联信息,确定索引文件与树型结构文件的关联关系。
所述索引文件可采用hash表结构存储。索引文件的内容由多个标识与偏移位置组成的条目及与主文件关联的标识信息及其它需要的信息组成,每个条目中除上面两项信息外还可根据需要增加其它信息,如所标识对象的长度等。
本发明实现了通过标识信息获取对应的数据元素,可在不将树型结构文件载入内部数据结构的情况下,以文本形式解析树型结构文件,快速获取数据内容。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


图1为本发明的树型结构文件数据查找方法流程图;图2为本发明的建立索引文件的方法一具体实施例流程图;图3为本发明的建立索引文件的方法另一具体实施例流程图。
具体实施例方式
下面以XML文件和RTF文件为例,说本发明的树型结构文件的数据查找方法,但本方法不限应用于XML和RTF文件。
索引文件主体部分可是以hash表结构存储的,hash结构中每一个条目至少由一个标识信息(Identification,简称ID)及一个位置参数信息组成,如有需要可增加其它信息,如所标识对象的长度等。此外,索引文件中需要一个与树型结构文件进行关联的信息,可通过该信息查找到索引文件对应的树型结构文件。
下面首先以XML文件为例说明本发明的树型结构文件的数据查找方法。
索引文件中的ID是XML文件中数据元素的标识,该标识在当前XML文件中是唯一的,可以通过该ID获取数据元素。位置信息可采用偏移位置(offset)来表示,其中,偏移位置是相对于XML文件流的位置,即计算该位置信息时,包括XML等树型文件中尖括号或关键字及其中元素字符。
索引文件中的ID是根据XML文件的结构为数据元素分配的。索引ID与该ID指向的数据元素在XML文件流中的offset相对应,offset是从0开始计数,即文件开始位置为0。
索引文件可作为独立的文件存储在与XML文件相同目录下或其它位置。也可不生成单独的文件,而将索引文件存储于XML文件中,这样方便文件的传输。在将索引文件存储于XML文件时,要注意保证原XML文件的正确性,因为索引文件的插放或修改可能会引起XML文件数据偏移量的变化。可将索引文件存储于XML文件的尾部,这样,可有效避免修改索引文件引起的XML文件数据偏移量的改变。若对XML文件的大小没有严格的限制,也可在XML文件的头部或中部开辟一块大小固定的区域,专门用于存储索引文件,这样,也可保证索引文件的修改不影响XML数据偏移量,但这样作缺乏灵活性,若索引文件比较小,那么会引起存储空间的浪费,若索引文件很大,需要重新分配下一块索引文件数据存储的位置,并将该信息存储在当前索引文件块中,存取信息操作较烦琐。
当索引文件独立于XML文件时,为了便于索引文件与XML文件建立关联,索引文件中需要进行相关的标记。可将表明索引文件与树型结构文件关联关系的关联信息存储于索引文件中,通过该关联信息,确定索引文件对应的树型结构文件。可通过一定格式的索引文件名对索引文件对应的XML文件进行标识,例如,采用与XML文件相同的名字,不同的后缀,或者将表明关联信息的文件标识(FileID)存储于文件中。文件名是容易被修改的信息,若将文件名修改,则会丢失索引文件与树型文件的关联。将关联信息存于索引文件中不易被修改,更为安全可靠。关联信息可根据需要进行自定义,可采用文件标识表示,例如用XML文件的全路径及文件名作为索引文件的文件标识的一部分,从而表明索引文件和XML文件的关联关系。
索引文件可由多个ID与offset对应的条目及可选的信息项组成,格式如下FileID文件标识,用于表明索引文件与树型结构文件的关联信息ID 1Offset 1(可选项信息1、2、..N)ID 2Offset 2(可选项信息1、2、..N)··ID NOffset N(可选项信息1、2、..N)在本实施例中,索引文件采用不存在可选项的最简形式。
如图1所示,为本发明的用于树型结构文件的数据查找方法流程图,包括步骤1、数据查找程序收到数据查找命令后,从该命令中提取待查找数据的标识信息;步骤2、数据查找程序在索引文件中查找该标识信息,获得该标识信息对应的位置参数;步骤3、根据所述位置参数从树型结构文件中获取数据元素。
当该方法应用于XML文件时,索引文件中的ID与XML中的ID一一对应,同时索引中的ID与该ID所指向的内容在XML文件流中的偏移位置相对应。当通过数据在XML文件流中的位置信息对XML文件中数据进行查找时,不需要将XML文件载入相应的数据结构,在XML文件以文本形式打开的情况同样可以实现数据的查找,并且不需对XML文件进行遍历,可以快速获取所需的数据。
在索引文件中查找标识信息时,可采用字符串匹配的方式在索引文件中查找与标识信息匹配的字符串,也可采用其他的方式。
索引文件可通过多种方法建立,如图2所示,为建立索引文件的方法具体实施例流程图,包括步骤A1、对树型结构文件进行遍历,根据预先设定的规则为数据元素分配唯一的标识信息,并计算数据元素的位置参数;步骤A2、以标识信息为索引,以标识信息对应的位置参数为值生成索引文件。
例如,在建立背景技术中所述的XML文件的索引文件时,预先设定ID信息为8位,前两位表示所在文件索引,接下来两位表示所在章节索引,后四位表示段落索引即该段落在当前章节中的索引值,那么“送别”位于本文件第一节第一段,其ID信息为01010001,offset为11;由于offset计算是相对于文件流的,即文件中存在的内容包括XML中的尖括号及其中的标识都计算在内,第一节第一段文本前存在三个标识,且每个标识所占字符数分别为4、3、4,原始XML文件中尖括号所括标记后是不存在换行符的,为便于阅读,例子中所显示的情况是通过XML查看工具得到的形式,每个标记独占一行,综上可确定该段落文本出现在XML文件的偏移位置为11;“下马饮君酒,问君何所之?”位于文件的第一节第二段,ID信息为01010002,offset为23;“君言不得意,归卧南山陲。”位于第二节第一段,其ID信息为01020001,offset为52;“但去莫复问,白云无尽时。”是第二节第二段,其ID信息为01020002,offset为67。本实施例对应的XML文件索引文件内容如下01010001 1101010002 2301020001 5201020002 67如果需要定位到ID为01020002的内容,则只需通过在索引文件中查找该ID对应的offset67,然后跳到XML文件流相应的位置即可。
XML允许在文本中创建一个数据的结构化模型。XML与超文本标记语言(Hypertext Markup Language,简称HTML)看起来非常相似,具有相似的正文内容和对等的标记;但XML比HTML先进之处在于它允许用户自定义一些标记来保存嵌入到描述性文本中的结构化数据。从而,可将标识信息存储于XML文件中。如图3所示,为建立索引文件的方法另一具体实施例流程图,包括步骤B1、根据预先设定的规则为数据元素分配唯一的标识信息,并存储于所述XML文件中;步骤B2、对该XML文件进行遍历,收集文件中的标识信息,并计算标识信息所指内容的位置信息;步骤B3、以标识信息为索引,以标识信息对应的位置参数为值生成索引文件。
同样依照上述规则分配ID信息,并将ID信息存储于XML文件中,存储了ID信息的XML文件如下所示<文档>
<节>
<段落id=“01010001”>
送别</段落>
<段落id=“01010002”>
下马饮君酒,问君何所之?</段落>
</节>
<节>
<段落id=“01020001”>
君言不得意,归卧南山陲。
</段落>
<段落id=“01020002”>
但去莫复问,白云无尽时。
</段落></节></文档>
然后,对上述存储了ID信息的XML文件进行遍历,收集ID信息,并计算offset,生成的索引文件如下01010001 2601010002 5301020001 9701020002 134可以看到,由于在文件中存储了ID信息,因此同一ID信息对应的offset与上一索引文件不同。在建立了索引文件后,如果需要定位到ID为01020002的内容,则只需通过在索引文件中查找该ID对应的偏移位值134,然后跳到XML文件流中的该位置即可获得该ID对应的文本为“但去莫复问,白云无尽时。”。
索引文件ID对应的内容可以是文件中任意数据,例如,文件属性数据。文本内容的ID分配规则仍可采用上述规则,文件章节段落的段落属性可用以“P”结束的ID表示,段落文本的字符属性可用以“T”结束的属性表示,存储了文本ID信息及属性ID信息的XML文件如下所示<文档><节>
<段落id=“01010001”段落属性=“属性id=01010001P”‘对齐方式居中;左缩近100磅’>
送别</段落>
<段落id=“01010002”字符属性=“属性id=01010001T”‘字体宋体;颜色蓝色’>
下马饮君酒,问君何所之?</段落>
</节></文档>
对应的XML文件索引文件内容XML文件全路径含文件名(用于建立与XML文件的关联)01010001 7001010002 13601010001P 5101010001T 7A例如,需要定位到01010001P所指向的属性,在索引文件中查找到01010001P所对应的偏移位置51,跳到XML文件流该位置即可获得‘对齐方式居中;左缩近100磅’。
除XML外还有许多树型结构文件,下面以RTF文件为例说明本方法的应用。
RTF是以成对出现的大括号及关键字进行层次区别,关键字可标识各层所包含的内容,大括号可嵌套出现,即可以通过相关的大括号或关键字出现的位置建立RTF文件的树型结构。RTF文件的开始部分会出现文件相关的属性信息,为了使描述清晰,现仅取RTF文件中与文本相关的一段进行说明。
下面所描述的是一个包含一个段落的RTF文件片段。最外层大括号为整个文件最外层,可作为树型结构的根节点;第二层是以“\sectd”所标识的章节属性信息,表明一个章节的开始;第三层是以“\pard”为关键字,标记后跟段落属性及相关段落信息;第四层是段落中的文本,本实施例中由“aaa”、“bbb”及一个回车符(RTF中用“\par”表示)组成。RTF文件片段结构如下{//---文档开始位置的属性相关信息在此省略\sectd\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid312\sectspecifyl\pard\plain\qj\liO\riO\nowidctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\fs21\lang1033\langfe2052\kerning2\loch\af0\hich\af0\dbch\af17\cgrid\langnp1033\langfenp2052{\hich\afO\d bch\af17\loch\f0 aaa}{\cf17\hich\af0\dbch\af17\loch\f0 bbb\par}}根据该实施例可建立相关的索引文件,例如针对文件中的文本建立索引项,可得索引文件的结构如下文档ID RTF文件全路径含文件名(用于建立与RTF文件的关联)
01010101 100(假设第一段文本内容从文件第100位置开始)01010102 13601010103 174此时如需要查找定位到第一个文件第一个章节第一段落中出现的第二个文本内容,则能过在索引表中查找ID为“01010102”的条目即可。
由上述实施例可知,根据树型结构文件类型的不同文件,其树型结构节点的标志标识方法可能不同,如利用关键字,括号等,在计算偏移量时,要考虑树型结构文件的具体类型。索引项的建立也可根据实际需要建立,若需定位文本数据,则为文本设置标识,若需定位文本属性信息,则为属性信息设置标识。
索引文件的建立可以在存储或关闭文件时进行,也可在其他时间进行;树型文件的修改,会引起索引文件的变化,因此在建立了索引文件之后,若需要修改索引文件,那么既可以重新生成一个索引文件替代原来的索引文件,也可以对原索引文件进行更新。索引文件可以独立存储,也可作为树型结构文件的一部分存储在树型结构文件中,如放在文件的结尾处。
本发明的树型文件数据查找方法实现了通过标识信息获取对应的数据元素,可在不将树型文件载入内部数据结构的情况下,以文本形式解析树型文件,快速获取数据内容。
最后应当说明的是以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解,依然可以对本发明的具体实施方式
进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
权利要求
1.一种用于树型结构文件的数据查找方法,其特征在于,该方法包括以下步骤步骤1、数据查找程序收到数据查找命令后,从该命令中提取待查找数据的标识信息;步骤2、数据查找程序在索引文件中查找该标识信息,获得该标识信息对应的位置参数;步骤3、根据所述位置参数从该树型结构文件中获取数据。
2.根据权利要求1所述的方法,其特征在于,该方法还包括建立索引文件的步骤。
3.根据权利要求2所述的方法,其特征在于,所述的建立索引文件的步骤具体为步骤A1、对该树型结构文件进行遍历,根据预先设定的规则为数据分配唯一的标识信息,并计算数据的位置参数;步骤A2、以标识信息为索引,以标识信息对应的位置参数为值生成索引文件。
4.根据权利要求2所述的方法,其特征在于,所述的建立索引文件的步骤具体为步骤B1、根据预先设定的规则为数据分配唯一的标识信息,并存储于所述树型结构文件中;步骤B2、对该树型结构文件进行遍历,收集文件中的标识信息以及标识信息所指数据的位置信息;步骤B3、以标识信息为索引,以标识信息对应的位置参数为值生成索引文件。
5.根据权利要求1-4任一所述的方法,其特征在于,所述索引文件独立于树型结构文件。
6.根据权利要求1-4任一所述的方法,其特征在于,所述索引文件存储于树型结构文件的尾部、头部或中部。
7.根据权利要求1-4任一所述的方法,其特征在于,该方法还包括将数据长度信息存储于所述索引文件中。
8.根据权利要求1-4任一所述的方法,其特征在于,该方法还包括将表明索引文件与树型结构文件关联关系的关联信息存储于索引文件中,通过该关联信息,确定索引文件与树型结构文件的关联关系。
9.根据权利要求1-4任一所述的方法,其特征在于,所述步骤2中的在索引文件中查找标识信息的步骤具体为采用字符串匹配的方式在索引文件中查找与标识信息匹配的字符串。
10.根据权利要求1-4任一所述的方法,其特征在于,所述采用hash表结构存储所述索引文件。
全文摘要
本发明涉及用于树型结构文件的数据查找方法,包括以下步骤数据查找程序收到数据查找命令后,从该命令中提取待查找数据的标识信息;数据查找程序在索引文件中查找该标识信息,获得该标识信息对应的位置参数;根据所述位置参数从树型结构文件中获取数据元素。该方法还包括建立索引文件的步骤。本发明实现了通过标识信息查找对应的数据元素,可在不将树型结构文件载入内部数据结构的情况下,以文本形式进行解析,快速查找获取数据内容,即在未将文件数据组织构建成树型结构时也可进行数据内容的查找。
文档编号G06F17/30GK1828607SQ20061006659
公开日2006年9月6日 申请日期2006年4月3日 优先权日2006年4月3日
发明者陈艳, 胡洁 申请人:无锡永中科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1