Xml文件中节点元素的索引信息表示法的制作方法

文档序号:6336055阅读:443来源:国知局
专利名称:Xml文件中节点元素的索引信息表示法的制作方法
技术领域
本发明涉及W3C标准,具体地说是一种用于解决大型XML文件的处理效率问题的 XML节点元素索引信息表示方法。
背景技术
目前在解析XML文件时,主要有二种技术文档对象模型DOM (Document Object Model)禾口 SAX (Simple API for XML)。DOM是W3C的成熟标准,是一个基于树型的解析技术。在内存中构建起一棵完整的 解析树,并生成解析树上的所有节点(Node)对象,以实现对整个XML文档的全面、动态的访 问。在DOM构造的节点树中,每一个元素、属性均被当作对象进行处理。内存中的解析 树结构提供了很好的导航支持,但存在以下问题首先,整个XML文档必须一次解析完成, 不可能只做部分解析;其次,在内存中加载整个文档和构建完整树结构成本很高,尤其当文 档非常大的时候。通常,DOM树的容量比文档容量要大一个数量级,所以它要消耗大量内存; 第三,一般的DOM节点类型在互操作性上有优势,但并不是非常适合对象类型的绑定。SAX是一个用于处理XML的事件驱动的“推”模型。它不是W3C标准,但它是一个 得到广泛认可的API。SAX解析器不象DOM那样为整个文档建立树型表示,而是在读取文档 时激活一系列的事件。这些事件被推给事件处理器,由事件处理器提供对文档内容的访问。上述二种技术在解析大型XML文件的应用中均存在一定的缺陷D0M对计算机的 性能和内存要很高的要求;SAX在处理文件编码和文件编辑时存在困难。

发明内容
本发明所要解决的技术问题是克服上述现有技术存在的缺陷,提供一种在解析 XML文件时对节点元素的新的处理方法,使用该方法能够以高效、灵活和低资源占用率的方 式来解析大型XML文件。为此,本发明采用如下的技术方案XML文件中节点元素的索引信息表示法,在解 析XML文件时,将原始XML文件以字节数组的形式读入内存;在加载文件的同时,扫描文件 内容,并且为每一个扫描得到的节点创建索引信息。本发明加载XML文件时直接将XML文件以字节数组形式读入内存,不需要象其它 方式那样将文件转换成对象树,加载效率高,速度快;索引信息以整数形式保存,容易编程 处理;索引信息长度固定,容易实现高效率检索。索引信息中的各项内容说明如下眷前驱节点当前XML节点的前驱节点。如果当前节点是根节点,则前驱节点指向 当前节点的起始位置;如果当前节点是第一个子节点,则前驱节点指向当前节点父节点的 起始位置;其他节点的前驱节点指向上一个兄弟节点。眷节点类型定义XML节点的类型;
深度XML节点在文档树中的深度; 节点长度XML节点的长度; 预留单元目前不使用,预留至将来使用; 偏移量XML节点首字节在整个XML文档中的位置;眷后继节点当前XML节点的后继节点。如果当前节点是文件中最后一个节点,则 后继节点指向该节点的起始位置;如果当前节点是叶子节点,则后继节点指向当前节点父 节点的下一个兄弟节点;其他节点的后继节点指向下一个兄弟节点。索引信息的长度为固定长度128bit,表示前驱节点和后继节点的信息长度均为 32bit,表示节点类型的信息长度为4bit,表示深度的信息长度为8bit,表示节点长度的信 息长度为20bit,表示偏移量的信息长度为30bit,表示预留单元的信息长度为2bit。因此 在对大型XML文件进行索引时,总索引信息所占用的内存空间与XML文件大小成线性关系, 特别是当节点字节数多时,效率高。不会如DOM处理方式中,当文件体积增大时,所占用的 内存空间成倍增长。本发明结合了传统的DOM和SAX解析XML文件的优点,通过改变XML节点元素的 表示方法,使本发明的XML元素处理方法与传统方法相比有以下几方面的改进1)处理XML文件的速度更快。由于不需要把XML文件中的各个元素当作对象来进 行处理,在处理XML元素时操作的对象是字节数组中的数据,使得编程处理时速度比传统 方式有成倍提高。2)解析XML文件时占用的存储空间小。用本发明方法处理的XML文件,所占用的 内存空间只是文件本身加上额外的索引信息;与DOM将节点当作对象存储在内存的方式相 比,所占用的存储空间大为减少。3)可以方便地对文件进行随机读写、访问。索引信息中的节点地址信息保证了在 访问XML文件时,可以随时访问文件的任何一个节点,而且由于索引信息是以定长的整数 形式保存的,所以访问速度很快。而传统的SAX技术在访问XML文件时由于缺少有效的索 引信息,在随机访问文件时就会遇到困难。下面结合说明书附图和具体实施方式
对本发明作进一步说明。


图1为本发明XML节点元素的索引信息格式。图2为本发明索引信息与XML文件的关系。
具体实施例方式下面以一个具体的XML文件为例,来说明该文件节点元素的索引信息表示方法。<note><to>George</to><from>John</from><heading>Reminder</heading><body>Don' t forget the meeting ! </body></note>
该XML文件在被读入内存的同时,根据图1定义的格式,生成如下形式的索引信 息。其中每一个节点的前驱和后继节点的信息是前驱和后继节点在内存中的偏移量。
权利要求
XML文件中节点元素的索引信息表示法,其特征在于在解析XML文件时,将原始XML文件以字节数组的形式读入内存;在加载文件的同时,扫描文件内容,并且为每一个扫描得到的节点创建索引信息,所述的节点索引信息包括前驱节点、节点类型、深度、节点长度、预留单元、偏移量和后继节点,节点索引信息中的各信息单元以定长的整数形式保存,所述的偏移量指XML节点首字节在整个XML文档中的位置,所述的深度指XML节点在文档树中的深度,所述的前驱节点为当前XML节点的前驱节点,所述的后继节点为当前XML节点的后继节点。
2 根据权利要求1所述的XML文件中节点元素的索引信息表示法,其特征在于如果当 前节点是根节点,则前驱节点指向当前节点的起始位置;如果当前节点是第一个子节点,则 前驱节点指向当前节点父节点的起始位置;其他节点的前驱节点指向上一个兄弟节点。
3.根据权利要求1或2所述的XML文件中节点元素的索引信息表示法,其特征在于如 果当前节点是文件中最后一个节点,则后继节点指向该节点的起始位置;如果当前节点是 叶子节点,则后继节点指向当前节点父节点的下一个兄弟节点;其他节点的后继节点指向 下一个兄弟节点。
4.根据权利要求3所述的XML文件中节点元素的索引信息表示法,其特征在于节点索 引信息的总长度为128bit,表示前驱节点和后继节点的信息长度均为32bit,表示节点类 型的信息长度为4bit,表示深度的信息长度为8bit,表示节点长度的信息长度为20bit,表 示偏移量的信息长度为30bit,表示预留单元的信息长度为2bit。
全文摘要
本发明公开了一种用于解决大型XML文件的处理效率问题的XML节点元素索引信息表示方法。现有的文档对象模型在解析大型XML文件的应用中均存在一定的缺陷DOM对计算机的性能和内存要很高的要求;SAX在处理文件编码和文件编辑时存在困难。本发明的特征在于在解析XML文件时,将原始XML文件以字节数组的形式读入内存;在加载文件的同时,扫描文件内容,并且为每一个扫描得到的节点创建索引信息,节点索引信息中的各信息单元以定长的整数形式保存。本发明加载XML文件时直接将XML文件以字节数组形式读入内存,加载效率高,速度快;索引信息以整数形式保存,容易编程处理;索引信息长度固定,实现了高效率检索。
文档编号G06F17/30GK101996252SQ20101054733
公开日2011年3月30日 申请日期2010年11月17日 优先权日2010年11月17日
发明者吴俊 , 楼伯良, 王松, 董毅, 阮黎翔, 陆承宇, 黄晓明 申请人:浙江省电力试验研究院;浙江省电力试验研究院技术服务中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1