專利名稱:信息文檔的處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種可擴展標(biāo)記語言(XML)信息 文檔的處理方法及裝置。
背景技術(shù):
XML文檔是一種用來結(jié)構(gòu)化數(shù)據(jù)的通用且適應(yīng)性強的格式文檔,目前已經(jīng)大量應(yīng) 用在計算機軟件工業(yè)領(lǐng)域?,F(xiàn)有的對XML文檔的處理方式中,主要采用針對XML的簡單應(yīng) 用程序編程接口(SAX,Simple API for XML)事件驅(qū)動模式,直接在事件觸發(fā)過程中處理文 檔。SAX事件驅(qū)動模式的主要處理方式為以一種流線形事件驅(qū)動處理方式作用于XML文 檔,每遇到一個元素就會觸發(fā)一個事件,由事件處理器進行處理,并直接在事件處理器中對 文檔內(nèi)容進行處理且返回結(jié)果(即直接返回結(jié)果)。這種處理方式的優(yōu)點是事件分析器按 順序讀取XML文檔,而不把整個文檔讀入內(nèi)存,所以處理速度很快。但是,現(xiàn)有這種處理方式的缺點是從頭到尾讀取XML文檔,必須通過一個個標(biāo)簽 間的連續(xù)跳轉(zhuǎn)才能處理下去,是一個不掉的阻塞式處理過程,所以導(dǎo)致整個文檔的處理過 程非常漫長,返回結(jié)果的速度很慢。當(dāng)打開一個內(nèi)容相對多的文檔時(例如在TOB網(wǎng)頁讀 取,辦公文檔格式讀取過程中),程序?qū)⒈籜ML文檔的解析處理過程所阻塞,必須通過一個 很長的時間才能將文檔全部處理完畢,用戶等待處理結(jié)果的時間很長,嚴(yán)重影響了軟件的 執(zhí)行效率。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種信息文檔的處理方法,加快XML文檔 返回處理結(jié)果的速度,提高計算機軟件的執(zhí)行效率。本發(fā)明的再一目的在于提供一種信息文檔的處理裝置,可加快XML文檔返回處理 結(jié)果的速度,提高計算機軟件的執(zhí)行效率。為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的—種信息文檔的處理方法,該方法包括A、將可擴展標(biāo)記語言XML文檔標(biāo)簽信息映射到可由下標(biāo)訪問的XML文檔向量模型 中;B、依據(jù)并行處理策略信息,通過下標(biāo)訪問并處理所述XML文檔向量模型的結(jié)構(gòu)元 素,其中對于需要并行處理的結(jié)構(gòu)元素采用并行方式進行處理。在一種優(yōu)選實施例中,所述步驟A中,將所述XML文檔中的每一個標(biāo)簽所包含的信 息對應(yīng)映射到XML文檔向量模型的一個結(jié)構(gòu)元素中,其中一個標(biāo)簽映射的結(jié)構(gòu)元素包含有 以下內(nèi)容信息1)當(dāng)前標(biāo)簽在XML文檔中的順序編號;2)當(dāng)前標(biāo)簽到包含此標(biāo)簽的父標(biāo)簽順序編號的距離;3)當(dāng)前標(biāo)簽包含的子標(biāo)簽個數(shù);
4)當(dāng)前標(biāo)簽的標(biāo)簽名;5)當(dāng)前標(biāo)簽的屬性信息;6)當(dāng)前標(biāo)簽包含的起始文本內(nèi)容;7)當(dāng)前標(biāo)簽包含的結(jié)束文本內(nèi)容。在一種優(yōu)選實施例中,所述步驟A以基于事件驅(qū)動分析處理的方式進行處理,具 體包括以下事件驅(qū)動處理過程起始文檔事件驅(qū)動處理建立或清理一個可以通過下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)作為所述 XML文檔向量模型,初始化當(dāng)前處理標(biāo)簽下標(biāo);起始標(biāo)簽事件驅(qū)動處理構(gòu)建一個新標(biāo)簽的結(jié)構(gòu)元素,并對該新結(jié)構(gòu)元素的順序 編號、該新標(biāo)簽到父標(biāo)簽順序編號的距離、該新結(jié)構(gòu)元素的標(biāo)簽名稱以及屬性進行賦值,并 將該新建的結(jié)構(gòu)元素加入到可用下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)中,變更當(dāng)前處理下標(biāo)為當(dāng)前結(jié)構(gòu)元 素的順序編號;內(nèi)容處理事件驅(qū)動處理判斷當(dāng)前遇到的內(nèi)容是起始內(nèi)容還是結(jié)束內(nèi)容,如是起 始內(nèi)容,將對當(dāng)前元素結(jié)構(gòu)的起始內(nèi)容賦值,否則對當(dāng)前元素結(jié)構(gòu)的結(jié)束內(nèi)容賦值;結(jié)束標(biāo)簽事件驅(qū)動處理對當(dāng)前處理結(jié)構(gòu)元素的包含子元素數(shù)賦值,并將當(dāng)前處 理結(jié)構(gòu)元素的父元素下標(biāo)賦給當(dāng)前處理標(biāo)簽下標(biāo)。在一種優(yōu)選實施例中,所述步驟B具體包括Bi、將所述XML文檔向量模型的第一個結(jié)構(gòu)元素作為當(dāng)前結(jié)構(gòu)元素,構(gòu)建該結(jié)構(gòu) 元素對應(yīng)的處理上下文作為當(dāng)前處理上下文;B2、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理;B3、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并為當(dāng)前子結(jié)構(gòu)元 素下標(biāo)賦值;B4、判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍內(nèi),如果是 則進入到步驟B9,否則進入到步驟B5 ;B5、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處理;B6、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處理;B7、判斷當(dāng)前結(jié)構(gòu)元素是否為根結(jié)構(gòu)元素,如果是則結(jié)束本流程,否則進入步驟 B8 ;B8、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下標(biāo),并返回到當(dāng) 前結(jié)構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,進入步驟B4 ;B9、依據(jù)預(yù)設(shè)的并行處理策略信息,判斷當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素是否可以并 行處理,如果是則進入步驟B10,否則進入步驟B13 ;B10、遍歷查找出當(dāng)前結(jié)構(gòu)元素下所有的互為兄弟關(guān)系的子結(jié)構(gòu)元素;B11、對查找出的全部子結(jié)構(gòu)元素采用并行方式進行處理;B12、等待并行處理完所有子結(jié)構(gòu)元素,進入步驟B5 ;B13、將當(dāng)前處理上下文進行相應(yīng)的處理,將當(dāng)前子結(jié)構(gòu)元素作為當(dāng)前處理結(jié)構(gòu)元 素,并構(gòu)建當(dāng)前處理結(jié)構(gòu)元素對應(yīng)的處理上下文作為當(dāng)前處理上下文,返回步驟B2。在一種優(yōu)選實施例中,所述步驟BlO的具體方法包括B401、記錄當(dāng)前子結(jié)構(gòu)元素下標(biāo);
B402、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為其下一個兄弟結(jié)構(gòu)元素下標(biāo);B403、判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍內(nèi),如果 是則進入到步驟B401,否則執(zhí)行步驟B404 ;B404、將步驟B401所記錄的子結(jié)構(gòu)元素下標(biāo)判定為可以并行處理的互為兄弟關(guān) 系的子結(jié)構(gòu)元素的下標(biāo)集合,結(jié)束本遍歷查找流程。在一種優(yōu)選實施例中,上述步驟Bll中所述對查找出的每個子結(jié)構(gòu)元素的處理具 體包括B41、將步驟BlO中查找到的需要并行處理的一子結(jié)構(gòu)元素下標(biāo)作為當(dāng)前子結(jié)構(gòu) 元素下標(biāo);B42、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)作為當(dāng)前處理結(jié)構(gòu)元素下標(biāo),并構(gòu)建該結(jié)構(gòu)元素對應(yīng) 的處理上下文,將該處理上下文作為當(dāng)前處理上下文;B43、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理;B44、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并為當(dāng)前子結(jié)構(gòu)元 素下標(biāo)賦值;B45、判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍內(nèi),如果是 則進入到步驟B42,否則進入到步驟B46 ;B46、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處理;B47、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處理;B48、判斷當(dāng)前結(jié)構(gòu)元素下標(biāo)是否為所述步驟B41中所述的子結(jié)構(gòu)元素下標(biāo),如果 是則結(jié)束本流程,否則進入步驟B49 ;B49、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下標(biāo),并返回到當(dāng) 前結(jié)構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,返回步驟45。在一種優(yōu)選實施例中,步驟B中所述的并行處理策略信息包括為需要并行處理 的標(biāo)簽設(shè)置并行處理標(biāo)識;如果標(biāo)簽具有并行處理標(biāo)識則判定可并行處理該標(biāo)簽內(nèi)的互為 兄弟關(guān)系的子標(biāo)簽。一種信息文檔的處理裝置,該裝置包括第一模塊,用于將可擴展標(biāo)記語言XML文檔標(biāo)簽信息映射到可由下標(biāo)訪問的XML 文檔向量模型中;第二模塊,用于依據(jù)并行處理策略信息,通過下標(biāo)訪問并處理所述XML文檔向量 模型的結(jié)構(gòu)元素,其中對于需要并行處理的結(jié)構(gòu)元素采用并行方式進行處理。在一種優(yōu)選實施例中,所述第一模塊具體包括以下事件驅(qū)動處理模塊起始文檔事件驅(qū)動處理模塊,用于建立或清理一個可以通過下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu) 作為所述XML文檔向量模型,初始化當(dāng)前處理標(biāo)簽下標(biāo);起始標(biāo)簽事件驅(qū)動處理模塊,用于構(gòu)建一個新標(biāo)簽的結(jié)構(gòu)元素,并對該新結(jié)構(gòu)元 素的順序編號、該新標(biāo)簽到父標(biāo)簽順序編號的距離、該新結(jié)構(gòu)元素的標(biāo)簽名稱以及屬性進 行賦值,并將該新建的結(jié)構(gòu)元素加入到可用下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)中,變更當(dāng)前處理下標(biāo)為 當(dāng)前結(jié)構(gòu)元素的順序編號;內(nèi)容處理事件驅(qū)動處理模塊,用于判斷當(dāng)前遇到的內(nèi)容是起始內(nèi)容還是結(jié)束內(nèi) 容,如是起始內(nèi)容,將對當(dāng)前元素結(jié)構(gòu)的起始內(nèi)容賦值,否則對當(dāng)前元素結(jié)構(gòu)的結(jié)束內(nèi)容賦值;結(jié)束標(biāo)簽事件驅(qū)動處理模塊,用于對當(dāng)前處理結(jié)構(gòu)元素的包含子元素數(shù)賦值,并 將當(dāng)前處理結(jié)構(gòu)元素的父元素下標(biāo)賦給當(dāng)前處理標(biāo)簽下標(biāo)。在一種優(yōu)選實施例中,所述第二模塊具體包括以下子模塊第Bl子模塊,用于將所述XML文檔向量模型的第一個結(jié)構(gòu)元素作為當(dāng)前結(jié)構(gòu)元 素,構(gòu)建該結(jié)構(gòu)元素對應(yīng)的處理上下文作為當(dāng)前處理上下文;第B2子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理;第B3子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并為 當(dāng)前子結(jié)構(gòu)元素下標(biāo)賦值;第B4子模塊,用于判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素 范圍內(nèi),如果是則進入到第B9子模塊,否則進入到第B5子模塊;第B5子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處 理;第B6子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處 理;第B7子模塊,用于判斷當(dāng)前結(jié)構(gòu)元素是否為根結(jié)構(gòu)元素,如果是則結(jié)束本流程, 否則進入第B8子模塊;第B8子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下 標(biāo),并返回到當(dāng)前結(jié)構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,進入第B4子模塊;第B9子模塊,用于依據(jù)預(yù)設(shè)的并行處理策略信息,判斷當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元 素是否可以并行處理,如果是則進入第BlO子模塊,否則進入第B13子模塊;第BlO子模塊,用于遍歷查找出當(dāng)前結(jié)構(gòu)元素下所有的互為兄弟關(guān)系的子結(jié)構(gòu)元 素;第Bll子模塊,用于對查找出的全部子結(jié)構(gòu)元素采用并行方式進行處理;第B12子模塊,用于等待并行處理完所有子結(jié)構(gòu)元素,進入第B5子模塊;第B13子模塊,用于將當(dāng)前處理上下文進行相應(yīng)的處理,將當(dāng)前子結(jié)構(gòu)元素作為 當(dāng)前處理結(jié)構(gòu)元素,并構(gòu)建當(dāng)前處理結(jié)構(gòu)元素對應(yīng)的處理上下文作為當(dāng)前處理上下文,返 回第B2子模塊。在一種優(yōu)選實施例中,所述第BlO子模塊的具體包括第B401子模塊,用于記錄當(dāng)前子結(jié)構(gòu)元素下標(biāo);第B402子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為其下一個兄弟結(jié)構(gòu)元素下標(biāo);第B403子模塊,用于判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元 素范圍內(nèi),如果是則進入到第B401子模塊,否則進入第B404子模塊;第B404子模塊,用于將第B401子模塊所記錄的子結(jié)構(gòu)元素下標(biāo)判定為可以并行 處理的互為兄弟關(guān)系的子結(jié)構(gòu)元素的下標(biāo)集合,結(jié)束本遍歷查找流程。在一種優(yōu)選實施例中,所述第Bll子模塊中包括第B41子模塊,用于第BlO子模塊中查找到的需要并行處理的一子結(jié)構(gòu)元素下標(biāo) 作為當(dāng)前子結(jié)構(gòu)元素下標(biāo);第B42子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)作為當(dāng)前處理結(jié)構(gòu)元素下標(biāo),并構(gòu)建該結(jié)構(gòu)元素對應(yīng)的處理上下文,將該處理上下文作為當(dāng)前處理上下文;第B43子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理;第B44子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并 為當(dāng)前子結(jié)構(gòu)元素下標(biāo)賦值;第B45子模塊,用于判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素 范圍內(nèi),如果是則進入到第B42子模塊,否則進入到第B46子模塊;第B46子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處 理;第B47子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處 理;第B48子模塊,用于判斷當(dāng)前結(jié)構(gòu)元素下標(biāo)是否為所述第B41子模塊中所述的子 結(jié)構(gòu)元素下標(biāo),如果是則結(jié)束本流程,否則進入第B49子模塊;第B49子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下 標(biāo),并返回到當(dāng)前結(jié)構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,之后進入第B45子模塊。由于本發(fā)明首先將XML文檔的信息全部映射到可用下標(biāo)訪問的XML文檔向量模型 中,對該XML文檔向量模型的訪問可以不必是流線形、一個接一個元素地訪問方式,而是可 以隨機移動訪問其中所有的結(jié)構(gòu)元素,因此本發(fā)明可以按照XML文檔的規(guī)范和特點,設(shè)置 并行處理策略,對于可以并行處理的標(biāo)簽,充分利用多線程資源在同一時刻并行處理多個 子標(biāo)簽元素。從而減少處理XML文檔的時間,提高XML文檔的處理性能,加快XML文檔返回 處理結(jié)果的速度,提高軟件的執(zhí)行效率。本發(fā)明尤其適用于多核CPU的情況下,在處理過程 中可實現(xiàn)將XML文檔的處理有效分配給不同CPU,實現(xiàn)最大化利用系統(tǒng)資源的目的,進一步 提高了軟件執(zhí)行效率。
圖1為本發(fā)明所述方法的核心處理流程;圖2a為本發(fā)明第一階段起始文檔事件驅(qū)動處理的流程圖;圖2b為本發(fā)明第一階段起始標(biāo)簽事件驅(qū)動處理的流程圖;圖2c為本發(fā)明第一階段內(nèi)容處理事件驅(qū)動處理的流程圖;圖2d為本發(fā)明第一階段結(jié)束標(biāo)簽事件驅(qū)動處理的流程圖;圖3為本發(fā)明一種實施例中所述第二階段的詳細處理流程圖;圖4a為所述實施例中遍歷查找出當(dāng)前結(jié)構(gòu)元素下所有的互為兄弟關(guān)系的子結(jié)構(gòu) 元素的處理流程圖;圖4b為所述實施例在并行處理過程中,對每個子結(jié)構(gòu)元素的處理流程圖;圖5為現(xiàn)有SAX事件驅(qū)動處理一個XML文檔實例的示意圖;圖6為本發(fā)明第一階段將該XML文檔實例映射得到的可由下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)映 射圖;圖7為本發(fā)明第二階段處理所述XML文檔向量模型的示意圖。
具體實施例方式下面通過具體實施例和附圖對本發(fā)明做進一步詳細說明。圖1為本發(fā)明所述方法的核心處理流程,該流程包括步驟101即第一階段、將XML文檔標(biāo)簽信息映射到可由下標(biāo)訪問的XML文檔向量模型中;步驟102即第二階段、依據(jù)并行處理策略信息,通過下標(biāo)訪問并處理所述XML文檔 向量模型的結(jié)構(gòu)元素,其中對于需要并行處理的結(jié)構(gòu)元素采用并行方式進行處理。在所述步驟101中,將所述XML文檔中的每一個標(biāo)簽所包含的信息對應(yīng)映射到XML 文檔向量模型的一個結(jié)構(gòu)元素中,其中一個標(biāo)簽映射的結(jié)構(gòu)元素包含有以下內(nèi)容信息1)當(dāng)前標(biāo)簽在XML文檔中的順序編號;2)當(dāng)前標(biāo)簽到包含此標(biāo)簽的父標(biāo)簽順序編號的距離;3)當(dāng)前標(biāo)簽包含的子標(biāo)簽個數(shù);4)當(dāng)前標(biāo)簽的標(biāo)簽名;5)當(dāng)前標(biāo)簽的屬性信息;6)當(dāng)前標(biāo)簽包含的起始文本內(nèi)容;7)當(dāng)前標(biāo)簽包含的結(jié)束文本內(nèi)容。下表1為一個標(biāo)簽對應(yīng)的結(jié)構(gòu)元素的內(nèi)容示例
權(quán)利要求
1.一種信息文檔的處理方法,其特征在于,該方法包括A、將可擴展標(biāo)記語言XML文檔標(biāo)簽信息映射到可由下標(biāo)訪問的XML文檔向量模型中;B、依據(jù)并行處理策略信息,通過下標(biāo)訪問并處理所述XML文檔向量模型的結(jié)構(gòu)元素, 其中對于需要并行處理的結(jié)構(gòu)元素采用并行方式進行處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A中,將所述XML文檔中的每一 個標(biāo)簽所包含的信息對應(yīng)映射到XML文檔向量模型的一個結(jié)構(gòu)元素中,其中一個標(biāo)簽映射 的結(jié)構(gòu)元素包含有以下內(nèi)容信息1)當(dāng)前標(biāo)簽在XML文檔中的順序編號;2)當(dāng)前標(biāo)簽到包含此標(biāo)簽的父標(biāo)簽順序編號的距離;3)當(dāng)前標(biāo)簽包含的子標(biāo)簽個數(shù);4)當(dāng)前標(biāo)簽的標(biāo)簽名;5)當(dāng)前標(biāo)簽的屬性信息;6)當(dāng)前標(biāo)簽包含的起始文本內(nèi)容;7)當(dāng)前標(biāo)簽包含的結(jié)束文本內(nèi)容。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟A以基于事件驅(qū)動分析處理的方 式進行處理,具體包括以下事件驅(qū)動處理過程起始文檔事件驅(qū)動處理建立或清理一個可以通過下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)作為所述XML 文檔向量模型,初始化當(dāng)前處理標(biāo)簽下標(biāo);起始標(biāo)簽事件驅(qū)動處理構(gòu)建一個新標(biāo)簽的結(jié)構(gòu)元素,并對該新結(jié)構(gòu)元素的順序編號、 該新標(biāo)簽到父標(biāo)簽順序編號的距離、該新結(jié)構(gòu)元素的標(biāo)簽名稱以及屬性進行賦值,并將該 新建的結(jié)構(gòu)元素加入到可用下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)中,變更當(dāng)前處理下標(biāo)為當(dāng)前結(jié)構(gòu)元素的 順序編號;內(nèi)容處理事件驅(qū)動處理判斷當(dāng)前遇到的內(nèi)容是起始內(nèi)容還是結(jié)束內(nèi)容,如是起始內(nèi) 容,將對當(dāng)前元素結(jié)構(gòu)的起始內(nèi)容賦值,否則對當(dāng)前元素結(jié)構(gòu)的結(jié)束內(nèi)容賦值;結(jié)束標(biāo)簽事件驅(qū)動處理對當(dāng)前處理結(jié)構(gòu)元素的包含子元素數(shù)賦值,并將當(dāng)前處理結(jié) 構(gòu)元素的父元素下標(biāo)賦給當(dāng)前處理標(biāo)簽下標(biāo)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B具體包括Bi、將所述XML文檔向量模型的第一個結(jié)構(gòu)元素作為當(dāng)前結(jié)構(gòu)元素,構(gòu)建該結(jié)構(gòu)元素 對應(yīng)的處理上下文作為當(dāng)前處理上下文;B2、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理;B3、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并為當(dāng)前子結(jié)構(gòu)元素下 標(biāo)賦值;B4、判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍內(nèi),如果是則進 入到步驟B9,否則進入到步驟B5 ;B5、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處理; B6、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處理; B7、判斷當(dāng)前結(jié)構(gòu)元素是否為根結(jié)構(gòu)元素,如果是則結(jié)束本流程,否則進入步驟B8 ; B8、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下標(biāo),并返回到當(dāng)前結(jié) 構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,進入步驟B4 ;B9、依據(jù)預(yù)設(shè)的并行處理策略信息,判斷當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素是否可以并行處 理,如果是則進入步驟B10,否則進入步驟B13 ;B10、遍歷查找出當(dāng)前結(jié)構(gòu)元素下所有的互為兄弟關(guān)系的子結(jié)構(gòu)元素; B11、對查找出的全部子結(jié)構(gòu)元素采用并行方式進行處理; B12、等待并行處理完所有子結(jié)構(gòu)元素,進入步驟B5 ;B13、將當(dāng)前處理上下文進行相應(yīng)的處理,將當(dāng)前子結(jié)構(gòu)元素作為當(dāng)前處理結(jié)構(gòu)元素, 并構(gòu)建當(dāng)前處理結(jié)構(gòu)元素對應(yīng)的處理上下文作為當(dāng)前處理上下文,返回步驟B2。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟BlO的具體方法包括 B401、記錄當(dāng)前子結(jié)構(gòu)元素下標(biāo);B402、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為其下一個兄弟結(jié)構(gòu)元素下標(biāo); B403、判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍內(nèi),如果是則 進入到步驟B401,否則執(zhí)行步驟B404 ;B404、將步驟B401所記錄的子結(jié)構(gòu)元素下標(biāo)判定為可以并行處理的互為兄弟關(guān)系的 子結(jié)構(gòu)元素的下標(biāo)集合,結(jié)束本遍歷查找流程。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,上述步驟Bll中所述對查找出的每個子結(jié) 構(gòu)元素的處理具體包括B41、將步驟BlO中查找到的需要并行處理的一子結(jié)構(gòu)元素下標(biāo)作為當(dāng)前子結(jié)構(gòu)元素 下標(biāo);B42、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)作為當(dāng)前處理結(jié)構(gòu)元素下標(biāo),并構(gòu)建該結(jié)構(gòu)元素對應(yīng)的處 理上下文,將該處理上下文作為當(dāng)前處理上下文;B43、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理; B44、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并為當(dāng)前子結(jié)構(gòu)元素下 標(biāo)賦值;B45、判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍內(nèi),如果是則進 入到步驟B42,否則進入到步驟B46 ;B46、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處理; B47、在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處理; B48、判斷當(dāng)前結(jié)構(gòu)元素下標(biāo)是否為所述步驟B41中所述的子結(jié)構(gòu)元素下標(biāo),如果是則 結(jié)束本流程,否則進入步驟B49 ;B49、將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下標(biāo),并返回到當(dāng)前結(jié) 構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,返回步驟45。
7.根據(jù)權(quán)利要求1或4所述的方法,其特征在于,步驟B中所述的并行處理策略信息包 括為需要并行處理的標(biāo)簽設(shè)置并行處理標(biāo)識;如果標(biāo)簽具有并行處理標(biāo)識則判定可并行 處理該標(biāo)簽內(nèi)的互為兄弟關(guān)系的子標(biāo)簽。
8.一種信息文檔的處理裝置,其特征在于,該裝置包括第一模塊,用于將可擴展標(biāo)記語言XML文檔標(biāo)簽信息映射到可由下標(biāo)訪問的XML文檔 向量模型中;第二模塊,用于依據(jù)并行處理策略信息,通過下標(biāo)訪問并處理所述XML文檔向量模型 的結(jié)構(gòu)元素,其中對于需要并行處理的結(jié)構(gòu)元素采用并行方式進行處理。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第一模塊具體包括以下事件驅(qū)動處 理模塊起始文檔事件驅(qū)動處理模塊,用于建立或清理一個可以通過下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)作為 所述XML文檔向量模型,初始化當(dāng)前處理標(biāo)簽下標(biāo);起始標(biāo)簽事件驅(qū)動處理模塊,用于構(gòu)建一個新標(biāo)簽的結(jié)構(gòu)元素,并對該新結(jié)構(gòu)元素的 順序編號、該新標(biāo)簽到父標(biāo)簽順序編號的距離、該新結(jié)構(gòu)元素的標(biāo)簽名稱以及屬性進行賦 值,并將該新建的結(jié)構(gòu)元素加入到可用下標(biāo)訪問的數(shù)據(jù)結(jié)構(gòu)中,變更當(dāng)前處理下標(biāo)為當(dāng)前 結(jié)構(gòu)元素的順序編號;內(nèi)容處理事件驅(qū)動處理模塊,用于判斷當(dāng)前遇到的內(nèi)容是起始內(nèi)容還是結(jié)束內(nèi)容,如 是起始內(nèi)容,將對當(dāng)前元素結(jié)構(gòu)的起始內(nèi)容賦值,否則對當(dāng)前元素結(jié)構(gòu)的結(jié)束內(nèi)容賦值;結(jié)束標(biāo)簽事件驅(qū)動處理模塊,用于對當(dāng)前處理結(jié)構(gòu)元素的包含子元素數(shù)賦值,并將當(dāng) 前處理結(jié)構(gòu)元素的父元素下標(biāo)賦給當(dāng)前處理標(biāo)簽下標(biāo)。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第二模塊具體包括以下子模塊第Bl子模塊,用于將所述XML文檔向量模型的第一個結(jié)構(gòu)元素作為當(dāng)前結(jié)構(gòu)元素,構(gòu) 建該結(jié)構(gòu)元素對應(yīng)的處理上下文作為當(dāng)前處理上下文;第B2子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理; 第B3子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并為當(dāng)前 子結(jié)構(gòu)元素下標(biāo)賦值;第B4子模塊,用于判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍 內(nèi),如果是則進入到第B9子模塊,否則進入到第B5子模塊;第B5子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處理; 第B6子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處理; 第B7子模塊,用于判斷當(dāng)前結(jié)構(gòu)元素是否為根結(jié)構(gòu)元素,如果是則結(jié)束本流程,否則 進入第B8子模塊;第B8子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下標(biāo),并 返回到當(dāng)前結(jié)構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,進入第B4子模塊;第B9子模塊,用于依據(jù)預(yù)設(shè)的并行處理策略信息,判斷當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素是 否可以并行處理,如果是則進入第BlO子模塊,否則進入第B13子模塊;第BlO子模塊,用于遍歷查找出當(dāng)前結(jié)構(gòu)元素下所有的互為兄弟關(guān)系的子結(jié)構(gòu)元素; 第Bll子模塊,用于對查找出的全部子結(jié)構(gòu)元素采用并行方式進行處理; 第B12子模塊,用于等待并行處理完所有子結(jié)構(gòu)元素,進入第B5子模塊; 第B13子模塊,用于將當(dāng)前處理上下文進行相應(yīng)的處理,將當(dāng)前子結(jié)構(gòu)元素作為當(dāng)前 處理結(jié)構(gòu)元素,并構(gòu)建當(dāng)前處理結(jié)構(gòu)元素對應(yīng)的處理上下文作為當(dāng)前處理上下文,返回第 B2子模塊。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述第BlO子模塊的具體包括 第B401子模塊,用于記錄當(dāng)前子結(jié)構(gòu)元素下標(biāo);第B402子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為其下一個兄弟結(jié)構(gòu)元素下標(biāo); 第B403子模塊,用于判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范 圍內(nèi),如果是則進入到第B401子模塊,否則進入第B404子模塊;第B404子模塊,用于將第B401子模塊所記錄的子結(jié)構(gòu)元素下標(biāo)判定為可以并行處理 的互為兄弟關(guān)系的子結(jié)構(gòu)元素的下標(biāo)集合,結(jié)束本遍歷查找流程。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述第Bll子模塊中包括 第B41子模塊,用于第BlO子模塊中查找到的需要并行處理的一子結(jié)構(gòu)元素下標(biāo)作為 當(dāng)前子結(jié)構(gòu)元素下標(biāo);第B42子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)作為當(dāng)前處理結(jié)構(gòu)元素下標(biāo),并構(gòu)建該結(jié) 構(gòu)元素對應(yīng)的處理上下文,將該處理上下文作為當(dāng)前處理上下文;第B43子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始階段的處理; 第B44子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素起始內(nèi)容的處理,并為當(dāng) 前子結(jié)構(gòu)元素下標(biāo)賦值;第B45子模塊,用于判斷當(dāng)前子結(jié)構(gòu)元素下標(biāo)是否在當(dāng)前結(jié)構(gòu)元素的子結(jié)構(gòu)元素范圍 內(nèi),如果是則進入到第B42子模塊,否則進入到第B46子模塊;第B46子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束內(nèi)容的處理; 第B47子模塊,用于在當(dāng)前處理上下文中進行當(dāng)前結(jié)構(gòu)元素對應(yīng)的結(jié)束階段的處理; 第B48子模塊,用于判斷當(dāng)前結(jié)構(gòu)元素下標(biāo)是否為所述第B41子模塊中所述的子結(jié)構(gòu) 元素下標(biāo),如果是則結(jié)束本流程,否則進入第B49子模塊;第B49子模塊,用于將當(dāng)前子結(jié)構(gòu)元素下標(biāo)設(shè)為當(dāng)前結(jié)構(gòu)元素的兄弟結(jié)構(gòu)元素下標(biāo), 并返回到當(dāng)前結(jié)構(gòu)元素的父結(jié)構(gòu)元素的處理上下文中,之后進入第B45子模塊。
全文摘要
本發(fā)明公開了一種信息文檔的處理方法和裝置,所述方法包括A、將可擴展標(biāo)記語言XML文檔標(biāo)簽信息映射到可由下標(biāo)訪問的XML文檔向量模型中;B、依據(jù)并行處理策略信息,通過下標(biāo)訪問并處理所述XML文檔向量模型的結(jié)構(gòu)元素,其中對于需要并行處理的結(jié)構(gòu)元素采用并行方式進行處理。所述裝置用于執(zhí)行上述方法。利用本發(fā)明,可以加快XML文檔返回處理結(jié)果的速度,提高軟件的執(zhí)行效率,減少用戶等待XML文檔處理結(jié)果的時間。
文檔編號G06F9/38GK102004631SQ201010519869
公開日2011年4月6日 申請日期2010年10月19日 優(yōu)先權(quán)日2010年10月19日
發(fā)明者曾良軍, 李恒 申請人:北京紅旗中文貳仟軟件技術(shù)有限公司