專利名稱:一種藍(lán)光播放機(jī)處理xml數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種處理XMl數(shù)據(jù)的方法,尤其涉及一種藍(lán)光播放機(jī)對(duì)XML數(shù)據(jù)的處理方法。
背景技術(shù):
藍(lán)光播放機(jī),索尼公司在2003年4月10日推出全球第一款。藍(lán)光播放機(jī)能夠播放高清格式的藍(lán)光碟片,能夠通過(guò)HDMI接口輸出1920X1080分辨率的1080P高清畫(huà)質(zhì),是目前DVD視頻清晰度的5-6倍,其質(zhì)量上的優(yōu)越性,使藍(lán)光播放機(jī)得到越來(lái)越多人的青睞。目前的藍(lán)光播放機(jī),在處理數(shù)據(jù)方面,除了一般的文本類型,還有一種被業(yè)內(nèi)廣泛采納的XML類型數(shù)據(jù)。XML (Extensible Markup Language)可擴(kuò)展標(biāo)記語(yǔ)言,用于標(biāo)記電子文檔使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。XML具有多種庫(kù),如TinyXML、Xerces DOM,RapidXML等,其中RapidXML是一個(gè)開(kāi)源的、輕量級(jí)的XML庫(kù),具有體積小、解析和保存速度快、可移植性好、可用性強(qiáng)的優(yōu)點(diǎn),與TinyXMUXerces DOM及其他XML庫(kù)相比,數(shù)據(jù)解析的速度要快數(shù)十倍,甚至一百倍。與傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方式如文本等相比,XML具有以下優(yōu)勢(shì)。UXML能夠?qū)Π虢Y(jié)構(gòu)化數(shù)據(jù)進(jìn)行有效的存取和管理。如網(wǎng)頁(yè)內(nèi)容就是一種半結(jié)構(gòu)化數(shù)據(jù),而傳統(tǒng)的數(shù)據(jù)庫(kù)對(duì)于類似網(wǎng)頁(yè)內(nèi)容這類半結(jié)構(gòu)化數(shù)據(jù)無(wú)法進(jìn)行有效的管理。2、提供對(duì)標(biāo)簽和路徑的操作。傳統(tǒng)數(shù)據(jù)庫(kù)語(yǔ)言允許對(duì)數(shù)據(jù)元素的值進(jìn)行操作,不能對(duì)元素名稱操作;而半結(jié)構(gòu)化數(shù)據(jù)庫(kù)提供了對(duì)標(biāo)簽名稱的操作,還包括了對(duì)路徑的操作。3、當(dāng)數(shù)據(jù)本身具有層次特征時(shí),由于XML數(shù)據(jù)格式能夠清晰表達(dá)數(shù)據(jù)的層次特征,因此XML便于對(duì)層次化的數(shù)據(jù)進(jìn)行操作。XML適合管理復(fù)雜數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)集,如果己經(jīng)以XML格式存儲(chǔ)信息,則XML利于文檔存儲(chǔ)和檢索;可以用方便實(shí)用的方式檢索文檔,并能夠提供高質(zhì)量的全文搜索引擎。另外XML能夠存儲(chǔ)和查詢異種的文檔結(jié)構(gòu),提供對(duì)異種信息存取的支持。目前市面上的藍(lán)光播放機(jī)在處理XML數(shù)據(jù)時(shí)需要對(duì)XML數(shù)據(jù)進(jìn)行解析,以獲取XML數(shù)據(jù)中含有的信息,目前處理效率普遍較低,使得涉及到數(shù)據(jù)類的操作時(shí)反應(yīng)較慢,從某種程度上來(lái)說(shuō)會(huì)影響用戶使用藍(lán)光播放機(jī)的體驗(yàn)。如何提高藍(lán)光播放機(jī)處理XML數(shù)據(jù)的效率,是人們研究的方向。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,能夠有效提聞處理效率,提升性能。為了解決上述技術(shù)問(wèn)題,本發(fā)明采取以下技術(shù)方案
一種藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,該方法基于內(nèi)置有RapidXML庫(kù)的藍(lán)光播放機(jī),包括以下步驟 (1)啟動(dòng)藍(lán)光播放機(jī),初始化數(shù)據(jù)接收線程Tl,Tl開(kāi)始運(yùn)行,則初始化過(guò)程結(jié)束;
(2)解析XML數(shù)據(jù),數(shù)據(jù)接收線程Tl接收到原始的XML數(shù)據(jù),XML解析模塊對(duì)該XML數(shù)據(jù)進(jìn)行解析;
(3 )構(gòu)造XML數(shù)據(jù),XML構(gòu)造模塊對(duì)XML數(shù)據(jù)進(jìn)行構(gòu)造。所述步驟(2)還包括以下步驟
(201)判斷數(shù)據(jù)接收線程是否接收到新的XML數(shù)據(jù);
(202)若接收到新的XML數(shù)據(jù),數(shù)據(jù)接收線程Tl將該XML數(shù)據(jù)轉(zhuǎn)給XML解析模塊,并且對(duì)該XML數(shù)據(jù)生成拷貝;若沒(méi)有接收到新的XML數(shù)據(jù),則返回步驟(201);
(203)對(duì)該份拷貝的聲明節(jié)點(diǎn)、body節(jié)點(diǎn)和action節(jié)點(diǎn)進(jìn)行校驗(yàn),若校驗(yàn)正常則進(jìn)入下一步驟(204);若校驗(yàn)異常,則解析失敗,轉(zhuǎn)入步驟(209);
(204)以action節(jié)點(diǎn)作為當(dāng)前的父節(jié)點(diǎn),并對(duì)該父節(jié)點(diǎn)下面的所有子節(jié)點(diǎn)進(jìn)行遍歷,查找指定的節(jié)點(diǎn);
(205)判斷是否找到了指定的節(jié)點(diǎn);
(206)若是,則保存該節(jié)點(diǎn)名的節(jié)點(diǎn)值;若不是,則解析失敗,轉(zhuǎn)入步驟(209);
(207)判斷是否所有指定的節(jié)點(diǎn)都被找到;
(208)若是,則解析成功,轉(zhuǎn)入步驟(209;若不是,轉(zhuǎn)入步驟(204);
(209)解析過(guò)程結(jié)束。所述校驗(yàn)節(jié)點(diǎn)時(shí),若該節(jié)點(diǎn)為空,則說(shuō)明校驗(yàn)異常,該節(jié)點(diǎn)不存在;若該節(jié)點(diǎn)不為空,則說(shuō)明該節(jié)點(diǎn)存在。所述步驟(3)還包括以下步驟
(301)XML構(gòu)造模塊接收數(shù)據(jù)接收線程Tl傳送的數(shù)據(jù)源;
(302)創(chuàng)建一個(gè)XML模板,該XML模板包括聲明節(jié)點(diǎn)和一個(gè)空的body節(jié)點(diǎn);
(303)在body節(jié)點(diǎn)下插入一個(gè)action節(jié)點(diǎn);
(304)XML文檔創(chuàng)建完畢,對(duì)該創(chuàng)建好的XML文檔進(jìn)行格式化并且轉(zhuǎn)換成字符串,保存該字符串,等待后續(xù)處理;
(305)構(gòu)造過(guò)程結(jié)束。所述action節(jié)點(diǎn)下插入有相關(guān)業(yè)務(wù)的子節(jié)點(diǎn)。所述XML構(gòu)造模塊接收到的數(shù)據(jù)源為原始輸入的參數(shù),或者經(jīng)過(guò)解析后得到的節(jié)點(diǎn)值。本發(fā)明解決了普遍存在的藍(lán)光播放機(jī)解析和保存XML數(shù)據(jù)時(shí)效率低的問(wèn)題,在開(kāi)源的RapidXML庫(kù)的基礎(chǔ)之上,定義了符合自身特定業(yè)務(wù)需求的XML處理機(jī)制,有效提高處理XML數(shù)據(jù)的效率,對(duì)藍(lán)光播放器的用戶體驗(yàn)有較大的提升。
附圖1為本發(fā)明主流程示意 附圖2為本發(fā)明初始化線程流程示意 附圖3為本發(fā)明解析過(guò)程的流程示意 附圖4為本發(fā)明構(gòu)造過(guò)程的流程示意圖。
具體實(shí)施例方式為了便于本領(lǐng)域技術(shù)人員的理解,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述。本發(fā)明揭示了一種藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,通過(guò)在藍(lán)光播放機(jī)內(nèi)應(yīng)用RapidXML庫(kù),有效提高處理XML數(shù)據(jù)的效率,提升整機(jī)的性能。該RapidXML庫(kù)具有XML解析模塊和XML構(gòu)造模塊,迭代器模塊,打印模塊和實(shí)用工具模塊等,此XML庫(kù)為本領(lǐng)域技術(shù)人員公知的技術(shù),并且該XML庫(kù)的各模塊都是常知技術(shù),在此不再詳細(xì)贅述。如附圖1所示,一種藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,包括步驟
一種藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,該方法基于內(nèi)置有RapidXML庫(kù)的藍(lán)光播放機(jī),包括以下步驟
(I)初始化,啟動(dòng)藍(lán)光播放機(jī),初始化數(shù)據(jù)接收線程Tl,Tl開(kāi)始運(yùn)行,則初始化過(guò)程結(jié)束。給藍(lán)光播放機(jī)上電開(kāi)機(jī),主進(jìn)程啟動(dòng),對(duì)數(shù)據(jù)接收線程Tl進(jìn)行初始化并使其運(yùn)行,完成初始化過(guò)程,如附圖2所示。(2)解析XML數(shù)據(jù),數(shù)據(jù)接收線程Tl接收到原始的XML數(shù)據(jù),XML解析模塊對(duì)該XML數(shù)據(jù)進(jìn)行解析。 (3 )構(gòu)造XML數(shù)據(jù),XML構(gòu)造模塊對(duì)XML數(shù)據(jù)進(jìn)行構(gòu)造。所述步驟(2)還包括以下步驟,如附圖3所示,
(201)判斷數(shù)據(jù)接收線程Tl是否接收到新的XML數(shù)據(jù)。實(shí)時(shí)檢測(cè)數(shù)據(jù)接收線程Tl是否有接收到新的XML數(shù)據(jù),如果有,則轉(zhuǎn)入下一步驟,如果沒(méi)有,則繼續(xù)檢測(cè)判斷。(202)若接收到新的XML數(shù)據(jù),數(shù)據(jù)接收線程Tl將該XML數(shù)據(jù)轉(zhuǎn)給XML解析模塊,并且對(duì)該XML數(shù)據(jù)生成拷貝;若沒(méi)有接收到新的XML數(shù)據(jù),則返回步驟(201)。當(dāng)數(shù)據(jù)接收線程Tl接收到新的XML數(shù)據(jù)時(shí),數(shù)據(jù)接收線程Tl將該XML數(shù)據(jù)轉(zhuǎn)給XML解析模塊,將對(duì)XML數(shù)據(jù)的控制權(quán)交給XML解析模塊,并且將該XML數(shù)據(jù)生成一份拷貝存儲(chǔ)起來(lái)。(203)對(duì)該份拷貝的聲明節(jié)點(diǎn)、body節(jié)點(diǎn)和action節(jié)點(diǎn)進(jìn)行校驗(yàn),若校驗(yàn)正常則進(jìn)入下一步驟(204);若校驗(yàn)異常,則解析失敗,轉(zhuǎn)入步驟(209)。該份XML數(shù)據(jù)中具有多個(gè)節(jié)點(diǎn),如聲明節(jié)點(diǎn)、body節(jié)點(diǎn)和action節(jié)點(diǎn)等,當(dāng)然,action節(jié)點(diǎn)也可以為其他名稱,根據(jù)信息情況的不同而自定義,為本領(lǐng)域技術(shù)人員所公知的知識(shí)。對(duì)該XML數(shù)據(jù)的拷貝的聲明節(jié)點(diǎn)、body節(jié)點(diǎn)和action節(jié)點(diǎn)進(jìn)行校驗(yàn),查看檢驗(yàn)的結(jié)果。校驗(yàn)節(jié)點(diǎn)即是查看該節(jié)點(diǎn)是否存在。校驗(yàn)節(jié)點(diǎn)時(shí),若該節(jié)點(diǎn)為空,則說(shuō)明校驗(yàn)異常,該節(jié)點(diǎn)不存在,解析失敗,轉(zhuǎn)入步驟(209);若該節(jié)點(diǎn)不為空,則說(shuō)明該節(jié)點(diǎn)存在,進(jìn)入下一步驟(204)。(204)以action節(jié)點(diǎn)作為當(dāng)前的父節(jié)點(diǎn),并對(duì)該父節(jié)點(diǎn)下面的所有子節(jié)點(diǎn)進(jìn)行遍歷,查找指定的節(jié)點(diǎn)。act ion節(jié)點(diǎn)下面具有多個(gè)子節(jié)點(diǎn),可以對(duì)其中的一些子節(jié)點(diǎn)進(jìn)行指定,也可以對(duì)所有的子節(jié)點(diǎn)進(jìn)行指定。遍歷即是指沿著某條搜索路線,依次對(duì)樹(shù)中每個(gè)結(jié)點(diǎn)均做一次且僅做一次訪問(wèn)。對(duì)所有子節(jié)點(diǎn)進(jìn)行遍歷,即是依次對(duì)各個(gè)子節(jié)點(diǎn)進(jìn)行且僅進(jìn)行一次訪問(wèn)。(205)判斷是否找到了指定的節(jié)點(diǎn)。(206)若是找到了指定的節(jié)點(diǎn),則保存該節(jié)點(diǎn)的節(jié)點(diǎn)值;若沒(méi)有找到指定的節(jié)點(diǎn),則解析失敗,轉(zhuǎn)入步驟(209)。(207)判斷是否所有指定的節(jié)點(diǎn)都被找到。即判斷是否所有指定的節(jié)點(diǎn)都在action節(jié)點(diǎn)的所有子節(jié)點(diǎn)中進(jìn)行了遍歷。
(208)若判定結(jié)果為真,即找到了所有指定的節(jié)點(diǎn),解析成功,轉(zhuǎn)入步驟(209);若判定結(jié)果為假,則沒(méi)有找到所有指定的節(jié)點(diǎn),繼續(xù)解析,轉(zhuǎn)入步驟(204),繼續(xù)在action節(jié)點(diǎn)的子節(jié)點(diǎn)中從頭開(kāi)始遍歷并查找剩下的指定的節(jié)點(diǎn)。需要說(shuō)明的是,只要有一個(gè)指定的節(jié)點(diǎn)沒(méi)有被找到,都說(shuō)明此次解析過(guò)程是失敗的。(209)完成此次XML數(shù)據(jù)的解析,解析過(guò)程結(jié)束。數(shù)據(jù)接收線程Tl繼續(xù)執(zhí)行掃描,重新等待接收新的XML數(shù)據(jù)。所述步驟(3)還包括以下步驟,如附圖4所示,為對(duì)XML數(shù)據(jù)的構(gòu)造具體執(zhí)行步驟。(301) XML構(gòu)造模塊接收數(shù)據(jù)接收線程Tl傳送的數(shù)據(jù)源,該數(shù)據(jù)源可為原始輸入的數(shù)據(jù)參數(shù),也可以為經(jīng)過(guò)解析后得到的節(jié)點(diǎn)值參數(shù)。(302)創(chuàng)建一個(gè)XML模板,該XML模板包括聲明節(jié)點(diǎn)和一個(gè)空的body節(jié)點(diǎn),該XML板包括且僅僅包含聲明節(jié)點(diǎn)和一個(gè)空的body節(jié)點(diǎn)。(303)在body節(jié)點(diǎn)下插入一個(gè)action節(jié)點(diǎn)。根據(jù)程序信息的不同,該action節(jié)點(diǎn)的名稱也可以為其他名稱,比如可為response節(jié)點(diǎn)(表示一段來(lái)自服務(wù)器端的響應(yīng)信息)或者request節(jié)點(diǎn)(表示一段來(lái)自客戶端的請(qǐng)求信息)等等,需要說(shuō)明的是,以上所述只是列舉,并非是限定。(304) XML文檔創(chuàng)建完畢,對(duì)該創(chuàng)建好的XML文檔進(jìn)行格式化并且轉(zhuǎn)換成字符串,保存該字符串,等待后續(xù)處理。后續(xù)處理如藍(lán)光播放機(jī)提取數(shù)據(jù)等行為。(305)完成此次XML數(shù)據(jù)的構(gòu)造過(guò)程,構(gòu)造過(guò)程結(jié)束。另外,在action節(jié)點(diǎn)下插入有相關(guān)業(yè)務(wù)的子節(jié)點(diǎn),該子節(jié)點(diǎn)可以為一個(gè)、兩個(gè)、三個(gè)或者更多個(gè),并無(wú)具體的數(shù)量限制。
權(quán)利要求
1.一種藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,該方法基于內(nèi)置有RapidXML庫(kù)的藍(lán)光播放機(jī),包括以下步驟 (1)啟動(dòng)藍(lán)光播放機(jī),初始化數(shù)據(jù)接收線程T1,T1開(kāi)始運(yùn)行,則初始化過(guò)程結(jié)束; (2)解析XML數(shù)據(jù),數(shù)據(jù)接收線程Tl接收到原始的XML數(shù)據(jù),XML解析模塊對(duì)該XML數(shù)據(jù)進(jìn)行解析; (3 )構(gòu)造XML數(shù)據(jù),XML構(gòu)造模塊對(duì)XML數(shù)據(jù)進(jìn)行構(gòu)造。
2.根據(jù)權(quán)利要求1所述的藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,其特征在于所述步驟(2)還包括以下步驟 (201)判斷數(shù)據(jù)接收線程是否接收到新的XML數(shù)據(jù); (202)若接收到新的XML數(shù)據(jù),數(shù)據(jù)接收線程Tl將該XML數(shù)據(jù)轉(zhuǎn)給XML解析模塊,并且對(duì)該XML數(shù)據(jù)生成拷貝;若沒(méi)有接收到新的XML數(shù)據(jù),則返回步驟(201); (203)對(duì)該份拷貝的聲明節(jié)點(diǎn)、body節(jié)點(diǎn)和action節(jié)點(diǎn)進(jìn)行校驗(yàn),若校驗(yàn)正常則進(jìn)入下一步驟(204);若校驗(yàn)異常,則解析失敗,轉(zhuǎn)入步驟(209); (204)以action節(jié)點(diǎn)作為當(dāng)前的父節(jié)點(diǎn),并對(duì)該父節(jié)點(diǎn)下面的所有子節(jié)點(diǎn)進(jìn)行遍歷,查找指定的節(jié)點(diǎn); (205)判斷是否找到了指定的節(jié)點(diǎn); (206)若是,則保存該節(jié)點(diǎn)的節(jié)點(diǎn)值;若不是,則解析失敗,轉(zhuǎn)入步驟(209); (207)判斷是否所有指定的節(jié)點(diǎn)都被找到; (208)若是,則解析成功,轉(zhuǎn)入步驟(209);若不是,轉(zhuǎn)入步驟(204),; (209)解析過(guò)程結(jié)束。
3.根據(jù)權(quán)利要求2所述的藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,其特征在于所述校驗(yàn)節(jié)點(diǎn)時(shí),若該節(jié)點(diǎn)為空,則說(shuō)明校驗(yàn)異常,該節(jié)點(diǎn)不存在;若該節(jié)點(diǎn)不為空,則說(shuō)明該節(jié)點(diǎn)存在。
4.根據(jù)權(quán)利要求1所述的藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,其特征在于所述步驟(3)還包括以下步驟 (301)XML構(gòu)造模塊接收數(shù)據(jù)接收線程Tl傳送的數(shù)據(jù)源; (302)創(chuàng)建一個(gè)XML模板,該XML模板包括聲明節(jié)點(diǎn)和一個(gè)空的body節(jié)點(diǎn); (303)在body節(jié)點(diǎn)下插入一個(gè)action節(jié)點(diǎn); (304)XML文檔創(chuàng)建完畢,對(duì)該創(chuàng)建好的XML文檔進(jìn)行格式化并且轉(zhuǎn)換成字符串,保存該字符串,等待后續(xù)處理; (305)構(gòu)造過(guò)程結(jié)束。
5.根據(jù)權(quán)利要求4所述的藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,其特征在于所述action節(jié)點(diǎn)下插入有相關(guān)業(yè)務(wù)的子節(jié)點(diǎn)。
6.根據(jù)權(quán)利要求5所述的藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,其特征在于所述XML構(gòu)造模塊接收到的數(shù)據(jù)源為原始輸入的參數(shù),或者經(jīng)過(guò)解析后得到的節(jié)點(diǎn)值。
全文摘要
本發(fā)明公開(kāi)了一種藍(lán)光播放機(jī)處理XML數(shù)據(jù)的方法,該方法基于內(nèi)置有RapidXML庫(kù)的藍(lán)光播放機(jī),包括以下步驟(1)啟動(dòng)藍(lán)光播放機(jī),初始化數(shù)據(jù)接收線程T1,T1開(kāi)始運(yùn)行,則初始化過(guò)程結(jié)束;(2)解析XML數(shù)據(jù),數(shù)據(jù)接收線程T1接收到原始的XML數(shù)據(jù),XML解析模塊對(duì)該XML數(shù)據(jù)進(jìn)行解析;(3)構(gòu)造XML數(shù)據(jù),XML構(gòu)造模塊對(duì)XML數(shù)據(jù)進(jìn)行構(gòu)造。本發(fā)明應(yīng)用在藍(lán)光播放機(jī)內(nèi),大大提升了處理數(shù)據(jù)的能力,提高了處理效率。
文檔編號(hào)G11B20/10GK103021437SQ20121050812
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年12月3日 優(yōu)先權(quán)日2012年12月3日
發(fā)明者匡哈雷 申請(qǐng)人:廣東歐珀移動(dòng)通信有限公司