一种通过索引解析XML文档的方法技术

技术编号:4227245 阅读:1074 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种通过索引解析XML文档的方法,技术特征在于方法步骤为遍历说明XML文档结构的DTD文档,抽取出DTD文档中根节点下的子树标签名;然后创建Hash表,按照抽取出的子树标签名,遍历需要解析的XML文档,查找并记录下各子树标签名在XML文档中的起始相对位置,按照结构项构造新的项目加入到Hash表中形成子树索引表;创建关键元素索引表后利用非验证的IXP解析模式或验证的IXP解析模式进行解析。有益效果:对于大型XML文档,IXP方法的解析速度远远快于DOM方法和SAX方法。通过提供通用接口,该方式能广泛应用于各种XML文档的解析,为XML文本分析提供了一种新的方法。

【技术实现步骤摘要】

本专利技术涉及一种通过索引解析XML文档的方法,属于XML信息处理领域。
技术介绍
由W3C组织提出的XML (extensible Markup Language)语言,由于其灵活性和自 描述性,已经成为Web2. 0应用乃至各种信息处理系统普遍采用的信息组织和描述格式, 得到越来越广泛的应用。目前得到较为广泛应用的XML解析器有IBM的XML4J、微软的 MSXML、0racle的XML Parser、Sun的JavaTM、 JDOM等。这些解析器所采用的解析方法可分 为为DOM禾P SAX两大类。 DOM是W3C提出的一种基于树结构的解析方法。DOM在解析XML文件时,将文档中 的元素、属性、注释、处理指令都看作树结构的一些节点,并将XML文档的内容组织成一颗 树型信息结构。由于DOM解析方法需要构造与拟解析的XML文件对应的树形结构数据结构, 所以它占用的内存与文档大小成正比(一般是2到5倍),因此不适合大型XML文档。为 了提高DOM方法的解析性能,研究人员对其进行了一定的改进。主要成果有延迟DOM解析 方法(DDOM)和压縮DOM解析方法(SEDOM)。 DDOM对DOM方法的改进体现在DDOM不需要 构造完整的解析属,只是在访问文档时根据需要构造DOM树的部分结构。DDOM主要适用于 对XML进行稀疏访问的场合,如果文档大部分都需要访问时,DDOM的性能比普通DOM方式 更慢。SEDOM则通过引入了压縮技术,明显减少普通DOM解析方法对存储空间的消耗,但由 于需要进行压縮操作,不可避免地对解析性能造成影响。 SAX是由XML_DEV邮件列表中的成员提出的另一种已得到广泛应用的XML文档解 析方法。SAX方法的核心是通过线性扫描XML文档,检索用户所关心的标签并触发相应的事 件,在事件处理过程中完成用户对XML文档的访问和解析。SAX方法可以解析任意大小的文 件,实现简单,资源消耗较少。在不需要改变文档的内容时并顺序访问的情况下,解析效率 比较高。 Matthias指出以XML作为主要数据描述和组织形式的信息系统中,XML解析方法 对该类系统的性能具有直接而显著的影响。DOM方法虽然可以建立XML文档的完整结构 并具有随机访问能力,但其计算资源消耗较大,不适用于对大规模的XML文档的快速解析; SAX方法虽然资源消耗较少,能够以较高的效率解析大规模的XML文档,但其去不具备对 XML文档的随机访问能力和在线修改能力。
技术实现思路
要解决的技术问题 为了避免现有技术的不足之处,本专利技术提出一种通过索引解析XML文档的方法, 可以提高对大规模XML文档的解析速度和检索效率,减少资源消耗,并提供对XML文档的随 机访问能力。 技术方案3 —种通过索引解析XML文档的方法,在解析过程中引入索引机制,并通过索引加 速对XML文档中各Element的随机访问速度。其技术特征在于方法步骤分为初始化阶段和 解析阶段 初始化阶段 步骤1、遍历说明XML文档结构的DTD文档,抽取出DTD文档中根节点下的子树标 签名; 步骤2、首先创建一个空Hash表,按照抽取出的子树标签名,遍历需要解析的XML 文档,查找并记录下各子树标签名在XML文档中的起始相对位置,按照结构项构造新的项 目加入到Hash表中形成子树索引表;所述的结构项是只读XML文档的结构项为索引号, 起始相对位置;非只读XML文档的结构项为索引号,起始相对位置,是否更改过; 步骤3、创建关键元素索引表首先创建一个空的Hash表,按关键元素的标签名称 遍历XML文档,抽取出文档中的所有该关键元素的标签名称对应的值,并查询子树索引表 得到该关键元素所在子树索引号,按结构项子树索引号,该关键元素的标签名称对应的值 填入Hash表中形成该关键元素的索引表; 解析阶段包括两种模式非验证的IXP解析模式和验证的IXP解析模式; 只读XML文档采用非验证的IXP模式如下 步骤4、抽取查询条件中的关键字名字,查询与关键字同名的关键元素的索引表, 按照查询条件匹配关键元素索引表中各项值,找到匹配项,抽取匹配项中的子树索引号;如 果未找到与关键字同名的关键元素的索引表,则返回到步骤3; 步骤5、根据子树索引号查询子树索引表,在子树索引表中找到匹配项后,抽取出 该项中的起始相对位置内容,根据起始相对位置定位到XML文档中的子树起始位置,将整 个子树内容加载到内存,在子树范围内遍历找到符合查询条件的元素值返回,查询结束; 非只读XML文档采用验证的IXP模式如下 步骤4、抽取查询条件中的关键字名字,查询与关键字同名的关键元素索引表,按 照查询条件匹配关键元素索引表中各项值,找到匹配项,抽取匹配项中的子树索引号; 步骤5、根据子树索引号查询子树索引表,找到匹配项后,抽取出匹配项中"起始相 对位置"内容,根据"起始相对位置"定位到XML文档中的对应子树起始位置,从这个起始位 置开始将整个子树内容加载到内存,然后在内存中加载的这个子树范围内遍历,找到符合 查询条件的元素的值返回,查询结束;如果查询到元素后还需要改变该元素值,则继续下述 步骤; 步骤6、更新上述步骤5中找到的元素的值,将子树索引表中对应于这个子树的项 目中"是否更改过"标志改为"真";在关闭XML文档时,先把所有在子树索引表项中"是否 更改过"标志值为"真"的子树在内存中的内容依次写入磁盘文件,然后执行关闭文件。 有益效果 本专利技术提出的通过索引解析XML文档的方法,具有如下特点 1.对XML文档操作前,有一个建立索引过程,这期间通过指定子树节点和关键节 点,创建关键元素索引表和子树索引表。然后,IXP允许应用程序基于这些表执行查询操作。 2.在对XML文档解析过程中,采用索引表的方式记录节点信息,查找时通过子树 索引表快速定位到XML文件中的子树位置,加快了检索速度。 3.根据子树索引表读入指定区域的内容,因为只将XML文档中的部分内容加载到 内存,通过遍历子树得到目标信息。该过程避免了将全部XML文件到加载内存,从而节省了 内存空间。 4. IXP-nv方法胜任SAX使用的各种场合,但比SAX更有效率,因为它通过初始化形 成元素子树后,查找时可快速定位到特定元素所在子树,并进行小范围遍历,而SAX通常需 要从文件开始处遍历文档。IXP-nv占用很少的内存,而且并不随着文件变大而增加。 5.解析过程包含两个部分查找索引表和在特定元素的子树中进行元素匹配。 IXP方法在实现过程中采用哈希函数优化索引表,查找索引表时间几乎是不变的,搜索元素 子树的时间只与子树的大小相关。因此IXP方法在大规模的XML文档下也能有很好的性能。 由于解析器性能通常取决于文档特征,如标签和数据比率,属性使用程度,元素子 树数目以及平均元素子树大小等。本专利技术基于IXP解析方法用0++语言实现了 IXP解析器, 在实施例中通过将IXP的性能与MSXML的性能在初始化和平均访问时间的比较,可以看出 本专利技术的效果。附图说明 图1 :IXP中建立索引及查询过程图示 图2 :DOM、 SAX与IXP方法初始化的性能比较 图3 :DOM、 SAX和IXP方法元素访问时间比较 图4 :IXP方法初始化后所形成的索引表本文档来自技高网
...

【技术保护点】
一种通过索引解析XML文档的方法,其特征在于步骤分为初始化阶段和解析阶段:初始化阶段:步骤1、遍历说明XML文档结构的DTD文档,抽取出DTD文档中根节点下的子树标签名;步骤2、首先创建一个空Hash表,按照抽取出的子树标签名,遍历需要解析的XML文档,查找并记录下各子树标签名在XML文档中的起始相对位置,按照结构项构造新的项目加入到Hash表中形成子树索引表;所述的结构项是:只读XML文档的结构项为:索引号,起始相对位置;非只读XML文档的结构项为:索引号,起始相对位置,是否更改过;步骤3、创建关键元素索引表:首先创建一个空的Hash表,按关键元素的标签名称遍历XML文档,抽取出文档中的所有该关键元素的标签名称对应的值,并查询子树索引表得到该关键元素所在子树索引号,按结构项:子树索引号,该关键元素的标签名称对应的值填入Hash表中形成该关键元素的索引表;解析阶段包括两种模式:非验证的IXP解析模式和验证的IXP解析模式;只读XML文档采用非验证的IXP模式如下:步骤4、抽取查询条件中的关键字名字,查询与关键字同名的关键元素的索引表,按照查询条件匹配关键元素索引表中各项值,找到匹配项,抽取匹配项中的子树索引号;如果未找到与关键字同名的关键元素的索引表,则返回到步骤3;步骤5、根据子树索引号查询子树索引表,在子树索引表中找到匹配项后,抽取出该项中的起始相对位置内容,根据起始相对位置定位到XML文档中的子树起始位置,将整个子树内容加载到内存,在子树范围内遍历找到符合查询条件的元素值返回,查询结束;非只读XML文档采用验证的IXP模式如下:步骤4’、抽取查询条件中的关键字名字,查询与关键字同名的关键元素索引表,按照查询条件匹配关键元素索引表中各项值,找到匹配项,抽取匹配项中的子树索引号;步骤5’、根据子树索引号查询子树索引表,找到匹配项后,抽取出匹配项中“起始相对位置”内容,根据“起始相对位置”定位到XML文档中的对应子树起始位置,从这个起始位置开始将整个子树内容加载到内存,然后在内存中加载的这个子树范围内遍历,找到符合查询条件的元素的值返回,查询结束;如果查询到元素后还需要改变该元素值,则继续下述步骤;步骤6’、更新上述步骤5’中找到的元素的值,将子树索引表中对应于这个子树的项目中“是否更改过”标志改为“真”;在关闭XML文档时,先把所有在子树索引表项中“是否更改过”标志值为“真”的子树在内存中的内容依次写入磁盘文...

【技术特征摘要】

【专利技术属性】
技术研发人员:杨刚周兴社张海辉詹涛
申请(专利权)人:西北工业大学
类型:发明
国别省市:87[中国|西安]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1