新四季網

XML文檔解析方法及裝置與流程

2023-06-06 00:54:46


本發明涉及語言解析技術,尤其涉及一種XML文檔解析方法及裝置。



背景技術:

目前,可擴展標記語言(Extensible Markup Language,簡稱XML)得到了廣泛的應用,而其中XML解析技術是XML應用的關鍵。具體地,XML本身只是以純文本對數據進行編碼的一種格式,要想利用XML,或者說利用XML文件中所編碼的數據,必須先將數據從純文本中解析出來,因此,必須有一個能夠識別XML文檔中信息的解析器,用來解釋XML文檔並提取其中的數據。然而,根據數據提取的不同需求,又存在著多種解析方式,不同的解析方式有著各自的優缺點和適用環境。選擇合適的XML解析技術能夠有效提升應用系統的整體性能。

現有技術中常用的XML解析技術有文檔對象模型(Document Object Model,簡稱DOM)技術,具體地,採用DOM技術解析XML文檔時,需要先讀取整個XML文檔,然後再對整個XML文檔進行解析處理。

但是,採用現有的DOM技術解析XML文檔,會佔用計算機的大量內存,對於大容量的XML文檔,甚至會導致內存溢出。



技術實現要素:

本發明提供一種XML文檔解析方法及裝置,用於解決現有解析XML文檔的方法佔用內存過大的問題。

本發明第一方面提供一種XML文檔解析方法,包括:

獲取可擴展標記語言XML文檔讀取指令,所述讀取指令中包括至少一個待讀取行標識;

根據所述至少一個待讀取行標識,在XML文檔中讀取出所述至少一個待讀取行標識對應的至少一行數據;

將所述至少一行數據轉換為節點樹,其中,所述至少一行數據中的元素和屬性成為所述節點樹上的節點;

對所述節點樹上的節點依次進行解析,獲取所述XML文檔的解析結果。

本發明第二方面提供一種XML文檔解析裝置,包括:

獲取模塊,用於獲取可擴展標記語言XML文檔讀取指令,所述讀取指令中包括至少一個待讀取行標識;

讀取模塊,用於根據所述至少一個待讀取行標識,在XML文檔中讀取出所述至少一個待讀取行標識對應的至少一行數據;

轉換模塊,用於將所述至少一行數據轉換為節點樹,其中,所述至少一行數據中的元素和屬性成為所述節點樹上的節點;

解析模塊,用於對所述節點樹上的節點依次進行解析,獲取所述XML文檔的解析結果。

本發明提供的XML文檔解析方法及裝置,獲取XML文檔讀取指令,該讀取指令中包括至少一個待讀取行標識,根據上述至少一個待讀取行標識,在XML文檔中讀取出上述至少一個待讀取行標識對應的至少一行數據,並將這至少一行數據轉換為節點樹,對該節點樹上的節點進行解析,獲取解析結果,實現了只需要根據讀取指令讀取需要讀取的行數據即可,而無需讀取整個文檔,大大降低了計算機內存的消耗,避免了內存溢出的現象,另外,只需要將讀取的行數據轉換為節點樹進行解析,還可以提高解析效率。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為本發明提供的XML文檔解析方法實施例一的流程示意圖;

圖2為本發明提供的XML文檔解析裝置實施例一的結構示意圖;

圖3為本發明提供的XML文檔解析裝置實施例二的結構示意圖。

具體實施方式

為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。

圖1為本發明提供的XML文檔解析方法實施例一的流程示意圖,如圖1所示,該方法包括:

S101、獲取XML文檔讀取指令,該讀取指令中包括至少一個待讀取行標識。

一般地,用於讀取XML文檔的讀取指令可以是一段程序,這段程序中指示了待讀取的XML文檔中需要讀取的部分,具體地,可以通過待讀取行標識來指示。

S102、根據上述至少一個待讀取行標識,在XML文檔中讀取出上述至少一個待讀取行標識對應的至少一行數據。

需要說明的是,XML文檔由多行數據組成,可以以每行的行號或者關鍵詞作為標識,讀取的時候將讀取指令中的待讀取行標識與各行數據的標識進行匹配,以讀取出上述至少一個待讀取行標識對應的至少一行數據。

具體地,可以將讀取出的上述至少一個待讀取行標識對應的至少一行數據先緩存在字符串緩存(stringbuffer)空間內。

S103、將上述至少一行數據轉換為節點樹。其中,上述至少一行數據中的元素和屬性成為該節點樹上的節點。

在將上述至少一個待讀取行標識對應的至少一行數據都讀取完後,將stringbuffer中的數據構建為節點樹。具體構建過程中,可以直接按照XML文檔原本的邏輯關係進行構建,即將XML文檔中各元素、屬性之間的父子關係、兄弟關係等呈現為節點樹即可。

S104、對上述節點樹上的節點依次進行解析,獲取該XML文檔的解析結果。具體對節點進行解析的過程在此不作限制。

本實施例中,獲取XML文檔讀取指令,該讀取指令中包括至少一個待讀取行標識,根據上述至少一個待讀取行標識,在XML文檔中讀取出上述至少一個待讀取行標識對應的至少一行數據,並將這至少一行數據轉換為節 點樹,對該節點樹上的節點進行解析,獲取解析結果,實現了只需要根據讀取指令讀取需要讀取的行數據即可,而無需讀取整個文檔,大大降低了計算機內存的消耗,避免了內存溢出的現象,另外,只需要將讀取的行數據轉換為節點樹進行解析,還可以提高解析效率。

具體地,上述根據上述至少一個待讀取行標識,在XML文檔中讀取出上述至少一個待讀取行標識對應的至少一行數據,可以是,根據上述至少一個待讀取行標識,從上述XML文檔的第一行數據開始,逐行遍歷該XML文檔,依次從該XML文檔中讀取上述至少一個待讀取行標識對應的至少一行數據。具體讀取過程中,讀到某行數據時,看該行數據的標識與上述至少一個待讀取行標識中的某個待讀取行標識相同,則將這行數據讀取出,暫存於stringbuffer空間內。更具體地,每讀取一行數據,就將這行數據插入stringbuffer空間內,直到將上述至少一個待讀取行標識對應的至少一行數據全部讀取完則停止讀取。

進一步地,上述對上述節點樹上的節點依次進行解析,獲取該XML文檔的解析結果,具體可以是:遍歷該節點樹上的所有節點,依次對各節點進行解析,獲取該XML文檔的解析結果。具體實現過程中,對節點對應的元素、或者屬性進行解析,生成對象存入內存中。

為了更好的節約內存資源,在上述對上述節點樹上的節點依次進行解析,獲取該XML文檔的解析結果之後,將所讀取的上述至少一行數據進行釋放。具體地,將上述stringbuffer空間內臨時存儲的上述至少一行數據進行釋放,以節約空間。

圖2為本發明提供的XML文檔解析裝置實施例一的結構示意圖,如圖2所示,該裝置包括:獲取模塊201、讀取模塊202、轉換模塊203和解析模塊204,其中:

獲取模塊201,用於獲取可擴展標記語言XML文檔讀取指令,所述讀取指令中包括至少一個待讀取行標識。

讀取模塊202,用於根據所述至少一個待讀取行標識,在XML文檔中讀取出所述至少一個待讀取行標識對應的至少一行數據。

轉換模塊203,用於將所述至少一行數據轉換為節點樹,其中,所述至少一行數據中的元素和屬性成為所述節點樹上的節點。

解析模塊204,用於對所述節點樹上的節點依次進行解析,獲取所述XML文檔的解析結果。

本實施例中,獲取XML文檔讀取指令,該讀取指令中包括至少一個待讀取行標識,根據上述至少一個待讀取行標識,在XML文檔中讀取出上述至少一個待讀取行標識對應的至少一行數據,並將這至少一行數據轉換為節點樹,對該節點樹上的節點進行解析,獲取解析結果,實現了只需要根據讀取指令讀取需要讀取的行數據即可,而無需讀取整個文檔,大大降低了計算機內存的消耗,避免了內存溢出的現象,另外,只需要將讀取的行數據轉換為節點樹進行解析,還可以提高解析效率。

進一步地,讀取模塊202,具體用於根據所述至少一個待讀取行標識,從所述XML文檔的第一行數據開始,逐行遍歷所述XML文檔,並依次從所述XML文檔中讀取出所述至少一個待讀取行標識對應的至少一行數據。

解析模塊204,具體用於遍歷所述節點樹上的所有節點,依次對各所述節點進行解析,獲取所述XML文檔的解析結果。

圖3為本發明提供的XML文檔解析裝置實施例二的結構示意圖,如圖3所示,在圖2的基礎上,該裝置還包括:釋放模塊301。

釋放模塊301,用於在解析模塊204對所述節點樹上的節點依次進行解析,獲取所述XML文檔的解析結果之後,將所讀取的所述至少一行數據進行釋放。

該裝置用於執行前述方法實施例,其技術效果和實現原理類似,在此不再贅述。

在本發明所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方, 或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。

另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用硬體加軟體功能單元的形式實現。

上述以軟體功能單元的形式實現的集成的單元,可以存儲在一個計算機可讀取存儲介質中。上述軟體功能單元存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)或處理器(英文:processor)執行本發明各個實施例所述方法的部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(英文:Read-Only Memory,簡稱:ROM)、隨機存取存儲器(英文:Random Access Memory,簡稱:RAM)、磁碟或者光碟等各種可以存儲程序代碼的介質。

最後應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的範圍。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀