一種xml文本定位方法
【技術領域】
[0001] 本發明涉及一種XML文本定位技術,尤其涉及一種基于DOM模型的XML文本定位 技術。
【背景技術】
[0002] DOM(文檔對象模型)是W3C(萬維網聯盟)的推薦標準。DOM定義了訪問和處理 諸如XML和XHTML文檔的標準。DOM(文檔對象模型)是一個使程序和腳本有能力動態地訪 問和更新文檔的內容、結構以及樣式的平臺和語言中立的接口。
[0003] XML DOM定義了所有XML元素的對象和屬性,以及訪問它們的方法(接口)。換句 話說,XML DOM是用于獲取、更改、添加或刪除XML元素的標準。
[0004] XML文檔的DOM模型主要是實現了數據和界面的交互,即通過XML數據描述,將該 數據顯示為文本或圖形的方式,而DOM模型作為控制該數據的一種編程方法。由于DOM模 型和XML數據是對應的映射關系,在應用過程中,可以先修改DOM模型數據,然后導出對應 的XML數據;也可以先修改XML數據后,再更新DOM模型。如網頁設計,可直接通過圖形化 界面操作,也可以通過文本化的操作方式,但不管用哪種方式來修改,DOM模型始終是同一 個。目前,一般應用軟件都采用修改XML文本之后,重新加載該文本數據,重新生成對應的 DOM模型。刪除原有DOM模型,再重新解析XML文件或內存數據重新形成DOM模型,這種方 式對于比較小XML文件或內存數據可能影響不大,但對于大的XML文件或內存數據,顯然效 率不尚。
[0005] 如果希望在保持現有DOM模型和XML數據的映射關系的情況下,實現局部XML文 本數據的修改,以便將修改后的局部XML文本快速映射到DOM結構,適應大文件的XML編輯 模式,則存在一個新的問題:如何快速地從DOM結構的節點映射到XML文本中。
【發明內容】
[0006] 本發明主要解決的技術問題是提供一種XML文本定位方法,使得能夠無需進行文 本內容的比對,快速定位DOM模型節點對象所對應的XML文本位置。
[0007] 為了解決上述技術問題,本發明提供了一種XML文本定位方法,包含以下步驟:
[0008] 在DOM模型的節點對象上保存該節點對象的文本索引和文本偏移量;文本索引 為:該節點對象的XML文本在整個XML文本中的初始位置;文本偏移量為:該節點對象的 XML文本被修改后,其修改后的文本長度與初始文本長度的差值;
[0009] 在DOM模型中的節點對象被選中時,將該節點對象的文本索引、和該節點對象所 有上層兄弟節點、所有父節點、和所有父節點的上層兄弟節點的文本偏移量疊加,定位該節 點對象對應的XML文本位置。
[0010] 作為進一步改進,該方法還可以包含以下步驟:
[0011] 在DOM模型的節點對象上保存該節點對象當前的文本內容。
[0012] 作為進一步改進,該方法還可以包含以下步驟:
[0013]在DOM模型中節點對象對應的XML文本被修改時,如果修改后的文本長度與修改 前文本長度不同,則根據兩者的差值修改該節點對象的文本偏移量。
[0014] 作為進一步改進,根據修改前后文本長度的差值修改該節點對象的文本偏移量的 步驟中,如果修改后的文本長度小于修改前的文本長度,則在當前文本偏移量基礎上減去 該差值,如果修改后的文本長度大于修改前的文本長度,則在當前文本偏移量的基礎上加 上該差值。
[0015] 作為進一步改進,該方法還可以包含以下步驟:
[0016] 在D0M模型中節點對象被刪除時,對該被刪除節點最近的上層節點的文本偏移量 進行修改,將其文本偏移量減去該被刪除節點當前的文本長度和文本偏移量。
[0017] 作為進一步改進,該方法還可以包含以下步驟:
[0018] 在D0M模型中新增節點對象時,該新增的節點的文本索引為其最近的上層節點當 前的文本長度、文本偏移量與文本索引之和,該新增的節點的文本偏移量為其初始文本長 度。
[0019] 作為進一步改進,在D0M模型的節點對象上保存該節點對象當前的文本內容的步 驟中:
[0020] 對于葉子節點,保存該節點對象對應的所有XML文本內容,對于非葉子節點,保存 該節點對象對應的前半部分XML文本內容。
[0021] 作為進一步改進,上述文本長度包含換行符。
[0022] 本發明實施方式與現有技術相比,主要區別及其效果在于:在D0M模型的節點對 象上保存該節點對象的文本索引和文本偏移量;文本索引為:該節點對象的XML文本在整 個XML文本中的初始位置;文本偏移量為:該節點對象的XML文本被修改后,其修改后的文 本長度與初始文本長度的差值;在D0M模型中的節點對象被選中時,將該節點對象的文本 索引、和該節點對象所有上層兄弟節點、所有父節點、和所有父節點的上層兄弟節點的文本 偏移量疊加,定位該節點對象對應的XML文本位置。使得能夠無需進行文本內容的比對,快 速定位D0M模型節點對象所對應的XML文本位置,從而可以方便實現局部XML文本數據的 修改,且使得修改后的數據可以快速映射到原始D0M結構,可以加快XML文本編輯的速度, 可應用于大文件的XML編輯模式。
【附圖說明】
[0023] 圖1是本發明一較佳實施方式中XML文本定位方法的流程圖。
[0024] 圖2是本發明一較佳實施方式中在D0M模型的節點對象上保存該節點對象的文本 內容、文本索引和文本偏移量的模型圖。
【具體實施方式】
[0025] 為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明的實施 方式作進一步地詳細描述。
[0026] 本發明一較佳實施方式涉及一種XML文本定位方法,其具體流程圖如圖1所示。
[0027] 步驟101中,在D0M模型的節點對象上保存該節點對象的文本內容、文本索引和文 本偏移量;文本索引為:該節點對象的XML文本在整個XML文本中的初始位置;文本偏移量 為:該節點對象的XML文本被修改后,其修改后的文本長度與初始文本長度的差值。本實施 方式中,文本偏移量的初始值為0。
[0028] 本步驟中:對于葉子節點,初始文本長度為該節點對象對應的所有XML文本的長 度;對于非葉子節點,初始文本長度為該節點對象對應的前半部分XML文本的長度。
[0029] 步驟102中,DOM模型中某個節點對象被選中。
[0030]步驟103中,將該節點對象的文本索引、和該節點對象所有上層兄弟節點、所有父 節點、和所有父節點的上層兄弟節點的文本偏移量疊加,定位該節點對象對應的XML文本 位置。
[0031] 查找所有上層兄弟節點、所有父節點、和所有父節點的上層兄弟節點的文本偏移 量的過程是:先找自己上層兄弟節點的文本偏移量,再找父節點的文本偏移量,再找父節點 的上層兄弟節點的文本偏移量,以此類推,直到根節點。
[0032] 步驟104中,該節點對象對應的XML文本被修改。
[0033] 步驟105中,判斷修改后的XML文本長度與初始修改前的文本長度是否相同,如果 修改后的文本長度與初始修改前文本長度不同,則進入步驟106,根據兩者的差值設置修改 該節點對象的文本偏移量。具體地說,如果修改后的文本長度小于初始修改前的文本長度, 則在當前文本偏移量基礎上減去該差值,如果修改后的文本長度大于修改前的文本長度, 則在當前文本偏移量的基礎上加上該差值。則文本偏移量為負值,如果修改后的文本長度 大于初始文本長度,則文本偏移量為正值。如果修改后的文本長度與初始文本長度相同,則 結束本流程不對該節點的文本偏移量。
[0034] 舉例而言,當前有XML文本文件內容如下:
【主權項】
1. 一種XML文本定位方法,其特征在于,包含W下步驟: 在DOM模型的節點對象上保存該節點對象的文本索引和文本偏移量;所述文本索引 為;該節點對象的XML文本在整個XML文本中的初始位置;所述文本偏移量為;該節點對象 的XML文本被修改后,其修改后的文本長度與初始文本長度的差值; 在所述DOM模型中的節點對象被選中時,將該節點對象的文本索引、和該節點對象所 有上層兄弟節點、所有父節點、和所有父節點的上層兄弟節點的文本偏移量疊加,定位該節 點對象對應的XML文本位置。
2. 根據權利要求1所述的XML文本定位方法,其特征在于,還包含W下步驟: 在DOM模型的節點對象上保存該節點對象當前的文本內容。
3. 根據權利要求2所述的XML文本定位方法,其特征在于,還包含W下步驟: 在所述DOM模型中節點對象對應的XML文本被修改時,如果修改后的文本長度與修改 前文本長度不同,則根據兩者的差值修改該節點對象的文本偏移量。
4. 根據權利要求3所述的XML文本定位方法,其特征在于,所述根據修改前后文本長度 的差值修改該節點對象的文本偏移量的步驟中,如果修改后的文本長度小于修改前的文本 長度,則在當前文本偏移量基礎上減去該差值,如果修改后的文本長度大于修改前的文本 長度,則在當前文本偏移量的基礎上加上該差值。
5. 根據權利要求2所述的XML文本定位方法,其特征在于,還包含W下步驟: 在所述DOM模型中節點對象被刪除時,對該被刪除節點最近的上層節點的文本偏移量 進行修改,將其文本偏移量減去該被刪除節點當前的文本長度和文本偏移量。
6. 根據權利要求2所述的XML文本定位方法,其特征在于,還包含W下步驟: 在所述DOM模型中新增節點對象時,該新增的節點的文本索引為其最近的上層節點當 前的文本長度、文本偏移量與文本索引之和,該新增的節點的文本偏移量為其初始文本長 度。
7. 根據權利要求2所述的XML文本定位方法,其特征在于,所述在DOM模型的節點對象 上保存該節點對象當前的文本內容的步驟中: 對于葉子節點,保存該節點對象對應的所有XML文本內容,對于非葉子節點,保存該節 點對象對應的前半部分XML文本內容。
8. 根據權利要求1至7中任意一項所述的XML文本定位方法,其特征在于,所述文本長 度包含換行符。
【專利摘要】本發明公開了一種XML文本定位方法,包含以下步驟:在DOM模型的節點對象上保存該節點對象的文本索引和文本偏移量;文本索引為:該節點對象的XML文本在整個XML文本中的初始位置;文本偏移量為:該節點對象的XML文本被修改后,其修改后的文本長度與初始文本長度的差值;在DOM模型中的節點對象被選中時,將該節點對象的文本索引、和該節點對象所有上層兄弟節點、所有父節點、和所有父節點的上層兄弟節點的文本偏移量疊加,定位該節點對象對應的XML文本位置。使得能夠無需進行文本內容的比對,快速定位DOM模型節點對象所對應的XML文本位置。
【IPC分類】G06F17-30
【公開號】CN104537084
【申請號】CN201410855376
【發明人】林 吉, 俞高宇, 張曉華
【申請人】上海可魯系統軟件有限公司
【公開日】2015年4月22日
【申請日】2014年12月31日