專利名稱:一種基于文檔的hsml解析方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字家庭技術(shù)領(lǐng)域,具體涉及一種基于文檔的HSML解析方法及系統(tǒng)。
技術(shù)背景
當(dāng)今數(shù)字電視發(fā)展迅速,然而數(shù)字電視在互動業(yè)務(wù)方面仍存在不足?,F(xiàn)存的數(shù)字 電視業(yè)務(wù)中,除視頻點播、節(jié)目導(dǎo)視等傳統(tǒng)的基本的互動業(yè)務(wù)外,其他互動業(yè)務(wù)較少,在電 視商務(wù)、信息服務(wù)等方面仍需加強(qiáng)。其主要原因是目前還缺乏一個針對數(shù)字電視互動業(yè)務(wù) 服務(wù)信息的規(guī)范,嚴(yán)重阻礙了平臺提供商與眾多內(nèi)容服務(wù)提供商之間的信息對接。
數(shù)字電視交互服務(wù)標(biāo)記語言(HSML)標(biāo)準(zhǔn)對XML語言進(jìn)行擴(kuò)展,制定針對數(shù)字電視 交互服務(wù)的標(biāo)記語言,實現(xiàn)對面向三網(wǎng)融合的數(shù)字電視交互服務(wù)進(jìn)行業(yè)務(wù)呈現(xiàn)及信息交互 描述,便于采用虛擬化技術(shù)對所需要的跨域共享與集成服務(wù)內(nèi)容進(jìn)行功能提取與抽象,用 以突破當(dāng)前交互服務(wù)內(nèi)容與數(shù)字電視平臺高耦合度的這一瓶頸,實現(xiàn)數(shù)字電視產(chǎn)業(yè)高端增 值業(yè)務(wù)的高速發(fā)展。
在HSML解析引擎技術(shù)實現(xiàn)中,尚沒有一種很好的解析方法適用于機(jī)頂盒的HSML 解析。而在XML通用標(biāo)記語言解析方法中,有像DOM這種基于文檔解析的方法,也有像SAX 這基于事件的解析方法。機(jī)頂盒在處理HSML語言時需要對HSML進(jìn)行重復(fù)的操作,此時可 以采用DOM的基于文檔的解析機(jī)制。
在對此方法的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn)
如能實現(xiàn)一種方法,將類似于DOM解析引擎的基于文檔的解析方法應(yīng)用于機(jī)頂盒 解析機(jī)制中去,則能提高HSML解析效率,提高文檔的可操作性。發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種基于文檔的HSML解析方法及系統(tǒng),能夠提 高HSML的解析效率,也可提高文檔的可操作性。
本發(fā)明提供的技術(shù)方案如下
一種基于文檔的HSML解析方法,包括
DHSML解析引擎獲取用戶編寫的HSML文檔進(jìn)行解析;
2) HSML解析引擎判斷HSML文檔是否錯誤,若是,轉(zhuǎn)入步驟3)進(jìn)行異常處理,否則 轉(zhuǎn)入步驟4);
3)異常處理模塊進(jìn)行異常處理,并將錯誤信息返回給用戶,使得用戶根據(jù)錯誤信 息重新編寫HSML文檔;
4)根據(jù)HSML文檔生成解析樹;
5)對生成的解析樹進(jìn)行遍歷;
6)判斷是否結(jié)束對解析樹的遍歷,若否,繼續(xù)對遍歷樹進(jìn)行遍歷,否則進(jìn)入步驟 7);
7)釋放內(nèi)存,包括保存在內(nèi)存中的生成的解析樹。
可選的,所述對生成的解析樹進(jìn)行遍歷,包括客戶機(jī)的遍歷和服務(wù)器的遍歷。本發(fā)明還提供一種HSML解析系統(tǒng)所述HSML解析系統(tǒng)包括HSML解析機(jī)制模塊、HSML解析引擎、HSML文檔模塊、樹 對象模塊;所述HSML解析機(jī)制模塊,用于設(shè)置HSML解析機(jī)制,所述HSML解析機(jī)制遵循HSML 的組織結(jié)構(gòu),通過隨機(jī)訪問機(jī)制使得應(yīng)用程序利用該接口訪問HSML文檔中的任數(shù)據(jù);所述HSML解析引擎,用于加載HSML解析機(jī)制模塊制定的解析規(guī)則,讀取HSML文 檔模塊中的HSML文檔進(jìn)行解析,對所述樹對像模塊中的樹對象進(jìn)行操作;所述HSML文檔模塊,用于存儲HSML文檔;所述樹對象模塊,設(shè)置和存儲樹對象,所述樹對象含有節(jié)點??蛇x的,所述樹對象的節(jié)點包括根節(jié)點和子節(jié)點,每個節(jié)點含有各自屬性??蛇x的,所述HSML解析引擎對樹對象的操作,包括節(jié)點相關(guān)、屬性相關(guān)、字符串轉(zhuǎn) 化為HSML和Xpath搜索節(jié)點四個部分??蛇x的,所述HSML解析引擎對樹對象的操作過程,包括獲得樹對象;在獲得樹對象之后,開始對樹對象進(jìn)行操作,包括獲得樹對象的節(jié)點,對這些節(jié)點 進(jìn)行添加、刪除和修改的操作;在獲得對象節(jié)點后,獲得節(jié)點的屬性,對這些屬性進(jìn)行添加、刪除和修改的操作。進(jìn)行字符串與HSML之間的轉(zhuǎn)換,包括將字符串轉(zhuǎn)化為HSML和將文檔或節(jié)點的 HSML轉(zhuǎn)化為字符串??蛇x的,所述獲得樹對象,包括通過讀取HSML文件,獲得樹對象,或者通過解析 HSML形式的文本得到樹對象,或者主動創(chuàng)建樹對象;上述技術(shù)方案可以看出由于本發(fā)明實施例采用一種基于文檔的HSML解析方法,能夠?qū)㈩愃朴贒OM解析弓| 擎的基于文檔的解析方法應(yīng)用于機(jī)頂盒HSML解析引擎中,在對HSML解析的過程中生成解 析樹,然后可對解析樹進(jìn)行操作,這樣能極高HSML的解析效率,也可提高文檔的可操作性。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據(jù)這些附圖獲得其它的附圖。圖1是本發(fā)明的HSML解析系統(tǒng)的組織結(jié)構(gòu)圖;圖2是本發(fā)明的基于文檔解析的樹結(jié)構(gòu)圖;圖3是本發(fā)明的HSML解析流程圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它 實施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明提供一種基于文檔的HSML解析方法及系統(tǒng),能夠?qū)㈩愃朴贒OM解析引擎的 基于文檔的解析方法應(yīng)用于機(jī)頂盒HSML解析引擎中,在對HSML解析的過程中生成解析樹, 然后可對解析樹進(jìn)行操作,這樣能極高HSML的解析效率,也可提高文檔的可操作性。
以下結(jié)合附圖對本發(fā)明技術(shù)方案分別進(jìn)行詳細(xì)說明。
圖1為本發(fā)明的HSML解析系統(tǒng)的組織結(jié)構(gòu)示意圖。
如圖1所示,HSML解析系統(tǒng)的組織結(jié)構(gòu)主要包括四個部分HSML解析機(jī)制模塊、 HSML解析引擎、HSML文檔模塊、樹對象模塊。
HSML解析機(jī)制模塊中設(shè)置的HSML解析機(jī)制遵循HSML的組織結(jié)構(gòu),在本發(fā)明 中,HSML解析機(jī)制通過一種隨機(jī)訪問機(jī)制,使得應(yīng)用程序利用該接口可以在任何時候訪問 HSML文檔中的任何一部分?jǐn)?shù)據(jù),也可以對HSML文檔中的數(shù)據(jù)進(jìn)行插入、刪除、修改、移動等 操作。
HSML解析引擎一方面讀取HSML文檔進(jìn)行解析,另一方面加載HSML解析機(jī)制制定 解析規(guī)則。其中,HSML解析引擎包含樹對象的操作,主要包括節(jié)點相關(guān)、屬性相關(guān)、字符串 轉(zhuǎn)化為HSML和Xpath搜索節(jié)點四個部分。
首先是獲得樹對象,有三種方法可以獲得一是通過讀取HSML文件,獲得樹對象; 二是通過解析HSML形式的文本,得到樹對象;三是主動創(chuàng)建樹對象。
在獲得樹對象之后,開始對樹對象進(jìn)行操作。首先是要獲得樹對象的節(jié)點,包括根 節(jié)點和子節(jié)點,也可以對這些節(jié)點進(jìn)行添加、刪除和修改的操作。
在獲得對象節(jié)點后,要獲得節(jié)點的屬性。屬性相關(guān)可以是獲得節(jié)點下的某屬性,也 可以遍歷某節(jié)點的所有屬性。也可以對這些屬性進(jìn)行添加、刪除和修改的操作。
然后是字符串與HSML之間的轉(zhuǎn)換。包括將字符串轉(zhuǎn)化為HSML和將文檔或節(jié)點的 HSML轉(zhuǎn)化為字符串。
HSML文檔模塊,用于存儲HSML文檔;
樹對象模塊,用于設(shè)置和存儲樹對象,樹對象含有節(jié)點,包括根節(jié)點和子節(jié)點。每 個節(jié)點含有各自屬性。
為進(jìn)一步說明本發(fā)明生成樹的方法,現(xiàn)結(jié)合圖2本發(fā)明的基于文檔解析的樹結(jié)構(gòu) 圖進(jìn)行說明。
本發(fā)明的解析機(jī)制是一種基于樹型的解析技術(shù),它在內(nèi)存中構(gòu)建起一棵完整的解 析樹,借此實現(xiàn)對整個HSML文檔的全面、動態(tài)訪問。
圖2顯示了本發(fā)明HSML解析模型的樹型結(jié)構(gòu)。
文檔是所有DOM樹的根,這個根有至少一個子節(jié)點,即根元素,另一個節(jié)點是文檔 類型(DocumentType),用于DTD說明。根元素有子節(jié)點,其子節(jié)點還有自己的子節(jié)點。子節(jié) 點可以是元素、文本、注釋、處理指令及其他類似信息。
本發(fā)明的解析引擎使用非常簡單。用戶可以隨機(jī)地訪問HSML文檔,由于整個樹都 構(gòu)建在內(nèi)存中,因此可以通過HSML API修改這些節(jié)點,例如增加一個子節(jié)點或修改、刪除一 個節(jié)點。
通過圖2,可以看到HSML解析引擎把HSML文檔轉(zhuǎn)化為一個包含其內(nèi)容的樹,并可以對樹進(jìn)行遍歷。用此方法的解析模型的優(yōu)點是編程容易,開發(fā)人員只需要調(diào)用建樹的指 令,然后利用navigationAPIs訪問所需的樹節(jié)點來完成任務(wù),可以很容易的添加和修改樹 中的元素。然而,由于使用HSML解析引擎的時候需要處理整個HSML文檔,所以對性能和內(nèi) 存的要求比較高,尤其是遇到很大的HSML文件的時候。為進(jìn)一步說明本發(fā)明的HSML解析方法,現(xiàn)結(jié)合HSML解析流程圖來進(jìn)一步說明。如圖3所示,首先進(jìn)入機(jī)頂盒系統(tǒng),進(jìn)行開發(fā)工作。1)開發(fā)人員開始開發(fā)工作,編寫HSML文檔。2)然后將HSML文檔交給HSML解析引擎進(jìn)行解析。3) HSML解析引擎判斷HSML文檔有沒有錯誤,有錯誤則轉(zhuǎn)入4)進(jìn)行異常處理,否則 轉(zhuǎn)入5)。4)發(fā)現(xiàn)文檔有錯誤,交給系統(tǒng)的異常處理模塊進(jìn)行處理,并將錯誤信息返回給開 發(fā)人員,然后開發(fā)人員根據(jù)錯誤信息重新編寫HSML文檔。5) HSML解析引擎根據(jù)HSML文檔生成解析樹。6)HSML解析引擎對生成的解析樹進(jìn)行遍歷,其中包括客戶機(jī)的遍歷和服務(wù)器的遍 歷。首先可以在客戶機(jī)上遍歷生成的HSML樹,比如,客戶機(jī)可能需要確定是否存在特 定名稱的Node等;然后在服務(wù)器上肯定會需要操縱樹,比如在一個Node中增加新的孩子寸。7) HSML解析引擎判斷是否結(jié)束對解析樹的遍歷,不結(jié)束的話可繼續(xù)對遍歷樹進(jìn)行 遍歷,結(jié)束的話則進(jìn)入下一步。8)釋放內(nèi)存,包括保存在內(nèi)存中的生成的解析樹。9)結(jié)束。綜上所述由于本發(fā)明實施例采用一種基于文檔的HSML解析方法,能夠?qū)㈩愃朴贒OM解析弓| 擎的基于文檔的解析方法應(yīng)用于機(jī)頂盒HSML解析引擎中,在對HSML解析的過程中生成解 析樹,然后可對解析樹進(jìn)行操作,這樣能極高HSML的解析效率,也可提高文檔的可操作性。需要說明的是,上述裝置和系統(tǒng)內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由 于與本發(fā)明方法實施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處 不再贅述。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可 以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀存儲介質(zhì)中,存 儲介質(zhì)可以包括只讀存儲器(ROM,Read Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。以上對本發(fā)明實施例所提供的一種基于文檔的HSML解析方法及系統(tǒng),進(jìn)行了詳 細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說 明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù) 本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不 應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種基于文檔的HSML解析方法,其特征在于,包括1)數(shù)字電視交互服務(wù)標(biāo)記語言HSML解析引擎獲取用戶編寫的HSML文檔進(jìn)行解析;2)HSML解析引擎判斷HSML文檔是否錯誤,若是,轉(zhuǎn)入步驟3)進(jìn)行異常處理,否則轉(zhuǎn)入 步驟4);3)異常處理模塊進(jìn)行異常處理,并將錯誤信息返回給用戶,使得用戶根據(jù)錯誤信息重 新編寫HSML文檔;4)根據(jù)HSML文檔生成解析樹;5)對生成的解析樹進(jìn)行遍歷;6)判斷是否結(jié)束對解析樹的遍歷,若否,繼續(xù)對遍歷樹進(jìn)行遍歷,否則進(jìn)入步驟7);7)釋放內(nèi)存,包括保存在內(nèi)存中的生成的解析樹。
2.根據(jù)權(quán)利要求1所述的基于文檔的HSML解析方法,其特征在于 所述對生成的解析樹進(jìn)行遍歷,包括客戶機(jī)的遍歷和服務(wù)器的遍歷。
3.一種HSML解析系統(tǒng),其特征在于,所述HSML解析系統(tǒng)包括 HSML解析機(jī)制模塊、HSML解析引擎、HSML文檔模塊、樹對象模塊;所述HSML解析機(jī)制模塊,用于設(shè)置HSML解析機(jī)制,所述HSML解析機(jī)制遵循HSML的組 織結(jié)構(gòu),通過隨機(jī)訪問機(jī)制使得應(yīng)用程序訪問HSML文檔中的任數(shù)據(jù);所述HSML解析引擎,用于加載HSML解析機(jī)制模塊制定的解析規(guī)則,讀取HSML文檔模 塊中的HSML文檔進(jìn)行解析,對所述樹對像模塊中的樹對象進(jìn)行操作; 所述HSML文檔模塊,用于存儲HSML文檔; 所述樹對象模塊,用于設(shè)置和存儲樹對象,所述樹對象含有節(jié)點。
4.根據(jù)權(quán)利要求3所述的HSML解析系統(tǒng),其特征在于所述樹對象的節(jié)點包括根節(jié)點和子節(jié)點,每個節(jié)點含有各自屬性。
5.根據(jù)權(quán)利要求3或4所述的HSML解析系統(tǒng),其特征在于所述HSML解析引擎對樹對象的操作,包括節(jié)點相關(guān)、屬性相關(guān)、字符串轉(zhuǎn)化為HSML和 Xpath搜索節(jié)點四個部分。
6.根據(jù)權(quán)利要求5所述的HSML解析系統(tǒng),其特征在于 所述HSML解析引擎對樹對象的操作過程,包括獲得樹對象;在獲得樹對象之后,開始對樹對象進(jìn)行操作,包括獲得樹對象的節(jié)點,對這些節(jié)點進(jìn)行 添加、刪除和修改的操作;在獲得對象節(jié)點后,獲得節(jié)點的屬性,對這些屬性進(jìn)行添加、刪除和修改的操作。 進(jìn)行字符串與HSML之間的轉(zhuǎn)換,包括將字符串轉(zhuǎn)化為HSML和將文檔或節(jié)點的HSML轉(zhuǎn) 化為字符串。
7.根據(jù)權(quán)利要求6所述的HSML解析系統(tǒng),其特征在于所述獲得樹對象,包括通過讀取HSML文件,獲得樹對象,或者通過解析HSML形式的文 本得到樹對象,或者主動創(chuàng)建樹對象。
全文摘要
本發(fā)明公開一種基于文檔的HSML解析方法及系統(tǒng)。該方法包括1)HSML解析引擎獲取用戶編寫的HSML文檔進(jìn)行解析;2)判斷HSML文檔是否錯誤,若是,轉(zhuǎn)入3),否則轉(zhuǎn)入4);3)異常處理模塊進(jìn)行異常處理,并將錯誤信息返回給用戶,使得用戶根據(jù)錯誤信息重新編寫HSML文檔;4)根據(jù)HSML文檔生成解析樹;5)對生成的解析樹進(jìn)行遍歷;6)判斷是否結(jié)束對解析樹的遍歷,若否,繼續(xù)對遍歷樹進(jìn)行遍歷,否則進(jìn)入7);7)釋放內(nèi)存,包括保存在內(nèi)存中的生成的解析樹。本發(fā)明技術(shù)方案能夠?qū)㈩愃朴贒OM解析引擎的基于文檔的解析方法應(yīng)用于機(jī)頂盒HSML解析引擎中,能提高HSML的解析效率,也可提高文檔的可操作性。
文檔編號H04L29/06GK102033905SQ20101052878
公開日2011年4月27日 申請日期2010年10月29日 優(yōu)先權(quán)日2010年10月29日
發(fā)明者朱建寶, 羅笑南, 鐘浩清, 陳任 申請人:廣東星海數(shù)字家庭產(chǎn)業(yè)技術(shù)研究院有限公司