主权项 |
一种通过索引解析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文档时,先把所有在子树索引表项中“是否更改过”标志值为“真”的子树在内存中的内容依次写入磁盘文件,然后执行关闭文件。 |