一种XML文本定位方法技术

技术编号:11326956 阅读:120 留言:0更新日期:2015-04-22 16:38
本发明专利技术公开了一种XML文本定位方法,包含以下步骤:在DOM模型的节点对象上保存该节点对象的文本索引和文本偏移量;文本索引为:该节点对象的XML文本在整个XML文本中的初始位置;文本偏移量为:该节点对象的XML文本被修改后,其修改后的文本长度与初始文本长度的差值;在DOM模型中的节点对象被选中时,将该节点对象的文本索引、和该节点对象所有上层兄弟节点、所有父节点、和所有父节点的上层兄弟节点的文本偏移量叠加,定位该节点对象对应的XML文本位置。使得能够无需进行文本内容的比对,快速定位DOM模型节点对象所对应的XML文本位置。

【技术实现步骤摘要】

本专利技术涉及一种XML文本定位技术,尤其涉及一种基于DOM模型的XML文本定位 技术。
技术介绍
DOM(文档对象模型)是W3C(万维网联盟)的推荐标准。DOM定义了访问和处理 诸如XML和XHTML文档的标准。DOM(文档对象模型)是一个使程序和脚本有能力动态地访 问和更新文档的内容、结构以及样式的平台和语言中立的接口。 XML DOM定义了所有XML元素的对象和属性,以及访问它们的方法(接口)。换句 话说,XML DOM是用于获取、更改、添加或删除XML元素的标准。 XML文档的DOM模型主要是实现了数据和界面的交互,即通过XML数据描述,将该 数据显示为文本或图形的方式,而DOM模型作为控制该数据的一种编程方法。由于DOM模 型和XML数据是对应的映射关系,在应用过程中,可以先修改DOM模型数据,然后导出对应 的XML数据;也可以先修改XML数据后,再更新DOM模型。如网页设计,可直接通过图形化 界面操作,也可以通过文本化的操作方式,但不管用哪种方式来修改,DOM模型始终是同一 个。目前,一般应用软件都采用修改XML文本之后,重新加载该文本数据,重新生成对应的 DOM模型。删除原有DOM模型,再重新解析XML文件或内存数据重新形成DOM模型,这种方 式对于比较小XML文件或内存数据可能影响不大,但对于大的XML文件或内存数据,显然效 率不尚。 如果希望在保持现有DOM模型和XML数据的映射关系的情况下,实现局部XML文 本数据的修改,以便将修改后的局部XML文本快速映射到DOM结构,适应大文件的XML编辑 模式,则存在一个新的问题:如何快速地从DOM结构的节点映射到XML文本中。
技术实现思路
本专利技术主要解决的技术问题是提供一种XML文本定位方法,使得能够无需进行文 本内容的比对,快速定位DOM模型节点对象所对应的XML文本位置。 为了解决上述技术问题,本专利技术提供了一种XML文本定位方法,包含以下步骤: 在DOM模型的节点对象上保存该节点对象的文本索引和文本偏移量;文本索引 为:该节点对象的XML文本在整个XML文本中的初始位置;文本偏移量为:该节点对象的 XML文本被修改后,其修改后的文本长度与初始文本长度的差值; 在DOM模型中的节点对象被选中时,将该节点对象的文本索引、和该节点对象所 有上层兄弟节点、所有父节点、和所有父节点的上层兄弟节点的文本偏移量叠加,定位该节 点对象对应的XML文本位置。 作为进一步改进,该方法还可以包含以下步骤: 在DOM模型的节点对象上保存该节点对象当前的文本内容。 作为进一步改进,该方法还可以包含以下步骤:在DOM模型中节点对象对应的XML文本被修改时,如果修改后的文本长度与修改 前文本长度不同,则根据两者的差值修改该节点对象的文本偏移量。 作为进一步改进,根据修改前后文本长度的差值修改该节点对象的文本偏移量的 步骤中,如果修改后的文本长度小于修改前的文本长度,则在当前文本偏移量基础上减去 该差值,如果修改后的文本长度大于修改前的文本长度,则在当前文本偏移量的基础上加 上该差值。 作为进一步改进,该方法还可以包含以下步骤: 在D0M模型中节点对象被删除时,对该被删除节点最近的上层节点的文本偏移量 进行修改,将其文本偏移量减去该被删除节点当前的文本长度和文本偏移量。 作为进一步改进,该方法还可以包含以下步骤: 在D0M模型中新增节点对象时,该新增的节点的文本索引为其最近的上层节点当 前的文本长度、文本偏移量与文本索引之和,该新增的节点的文本偏移量为其初始文本长 度。 作为进一步改进,在D0M模型的节点对象上保存该节点对象当前的文本内容的步 骤中: 对于叶子节点,保存该节点对象对应的所有XML文本内容,对于非叶子节点,保存 该节点对象对应的前半部分XML文本内容。 作为进一步改进,上述文本长度包含换行符。 本专利技术实施方式与现有技术相比,主要区别及其效果在于:在D0M模型的节点对 象上保存该节点对象的文本索引和文本偏移量;文本索引为:该节点对象的XML文本在整 个XML文本中的初始位置;文本偏移量为:该节点对象的XML文本被修改后,其修改后的文 本长度与初始文本长度的差值;在D0M模型中的节点对象被选中时,将该节点对象的文本 索引、和该节点对象所有上层兄弟节点、所有父节点、和所有父节点的上层兄弟节点的文本 偏移量叠加,定位该节点对象对应的XML文本位置。使得能够无需进行文本内容的比对,快 速定位D0M模型节点对象所对应的XML文本位置,从而可以方便实现局部XML文本数据的 修改,且使得修改后的数据可以快速映射到原始D0M结构,可以加快XML文本编辑的速度, 可应用于大文件的XML编辑模式。【附图说明】 图1是本专利技术一较佳实施方式中XML文本定位方法的流程图。 图2是本专利技术一较佳实施方式中在D0M模型的节点对象上保存该节点对象的文本 内容、文本索引和文本偏移量的模型图。【具体实施方式】 为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术的实施 方式作进一步地详细描述。 本专利技术一较佳实施方式涉及一种XML文本定位方法,其具体流程图如图1所示。 步骤101中,在D0M模型的节点对象上保存该节点对象的文本内容、文本索引和文 本偏移量;文本索引为:该节点对象的XML文本在整个XML文本中的初始位置;文本偏移量 为:该节点对象的XML文本被修改后,其修改后的文本长度与初始文本长度的差值。本实施 方式中,文本偏移量的初始值为0。 本步骤中:对于叶子节点,初始文本长度为该节点对象对应的所有XML文本的长 度;对于非叶子节点,初始文本长度为该节点对象对应的前半部分XML文本的长度。 步骤102中,DOM模型中某个节点对象被选中。步骤103中,将该节点对象的文本索引、和该节点对象所有上层兄弟节点、所有父 节点、和所有父节点的上层兄弟节点的文本偏移量叠加,定位该节点对象对应的XML文本 位置。 查找所有上层兄弟节点、所有父节点、和所有父节点的上层兄弟节点的文本偏移 量的过程是:先找自己上层兄弟节点的文本偏移量,再找父节点的文本偏移量,再找父节点 的上层兄弟节点的文本偏移量,以此类推,直到根节点。 步骤104中,该节点对象对应的XML文本被修改。 步骤105中,判断修改后的XML文本长度与初始修改前的文本长度是否相同,如果 修改后的文本长度与初始修改前文本长度不同,则进入步骤106,根据两者的差值设置修改 该节点对象的文本偏移量。具体地说,如果修改后的文本长度小于初始修改前的文本长度, 则在当前文本偏移量基础上减去该差值,如果修改后的文本长度大于修改前的文本长度, 则在当前文本偏移量的基础上加上该差值。则文本偏移量为负值,如果修改后的文本长度 大于初始文本长度,则文本偏移量为正值。如果修改后的文本长度与初始文本长度相同,则 结束本流程不对该节点的文本偏移量。 举例而言,当前有XML文本文件内容如下:【主权项】1. 一种XML文本定位方法,其特征在于,包含W下步骤: 在DOM模型的节点对象上保存该节点对象的文本索引和文本偏移量;所述文本索引 为;该节点对象的XML文本在整个XML文本中的初始位置;所述文本偏移量为;该节点对象 的XML文本被修改后,其本文档来自技高网
...

【技术保护点】
一种XML文本定位方法,其特征在于,包含以下步骤:在DOM模型的节点对象上保存该节点对象的文本索引和文本偏移量;所述文本索引为:该节点对象的XML文本在整个XML文本中的初始位置;所述文本偏移量为:该节点对象的XML文本被修改后,其修改后的文本长度与初始文本长度的差值;在所述DOM模型中的节点对象被选中时,将该节点对象的文本索引、和该节点对象所有上层兄弟节点、所有父节点、和所有父节点的上层兄弟节点的文本偏移量叠加,定位该节点对象对应的XML文本位置。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:林吉俞高宇张晓华
申请(专利权)人:上海可鲁系统软件有限公司
类型:发明
国别省市:上海;31

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

1