发明名称 一种通过索引解析XML文档的方法
摘要 本发明涉及一种通过索引解析XML文档的方法,技术特征在于方法步骤为遍历说明XML文档结构的DTD文档,抽取出DTD文档中根节点下的子树标签名;然后创建Hash表,按照抽取出的子树标签名,遍历需要解析的XML文档,查找并记录下各子树标签名在XML文档中的起始相对位置,按照结构项构造新的项目加入到Hash表中形成子树索引表;创建关键元素索引表后利用非验证的IXP解析模式或验证的IXP解析模式进行解析。有益效果:对于大型XML文档,IXP方法的解析速度远远快于DOM方法和SAX方法。通过提供通用接口,该方式能广泛应用于各种XML文档的解析,为XML文本分析提供了一种新的方法。
申请公布号 CN101777045A 申请公布日期 2010.07.14
申请号 CN200810150767.7 申请日期 2008.09.01
申请人 西北工业大学 发明人 杨刚;周兴社;张海辉;詹涛
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种通过索引解析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文档时,先把所有在子树索引表项中“是否更改过”标志值为“真”的子树在内存中的内容依次写入磁盘文件,然后执行关闭文件。
地址 710072陕西省西安市友谊西路127号