專利名稱:一種解析數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)解析領(lǐng)域,特別涉及一種解析數(shù)據(jù)的方法。
背景技術(shù):
目前XML數(shù)據(jù)的解析包括以下兩種主流技術(shù)DOM技術(shù),其是用與平臺(tái)和語言無關(guān)的方式表示XML文檔的官方W3C標(biāo)準(zhǔn)。 DOM是以層次結(jié)構(gòu)組織的節(jié)點(diǎn)或信息片斷的集合,這個(gè)層次結(jié)構(gòu)允許開發(fā)人員在樹中尋 找特定信息。分析該結(jié)構(gòu)通常需要加載整個(gè)文檔和構(gòu)造層次結(jié)構(gòu),然后才能處理XML 文檔中的數(shù)據(jù)。由于它是基于信息層次的,因而DOM被認(rèn)為是基于樹或基于對(duì)象的。 DOM解析器把XML文檔轉(zhuǎn)化為一個(gè)包含其內(nèi)容的樹,并可以對(duì)樹進(jìn)行遍歷。用DOM 解析模型的優(yōu)點(diǎn)是編程容易,開發(fā)人員只需要調(diào)用建樹的指令,然后訪問所需的樹節(jié)點(diǎn) 來完成任務(wù)??梢院苋菀椎奶砑雍托薷臉渲械脑亍H欢捎谑褂肈OM解析器的時(shí)候 需要處理整個(gè)XML文檔,所以對(duì)性能和內(nèi)存的要求比較高,尤其在手機(jī)等嵌入式系統(tǒng)中 很難滿足其要求。SAX技術(shù),其是一個(gè)用于處理XML事件驅(qū)動(dòng)的“推”模型,雖然它不是W3C 標(biāo)準(zhǔn),但它也是一個(gè)得到了廣泛認(rèn)可的API。SAX解析器不像DOM那樣建立一個(gè)完整 的文檔樹,而是在讀取文檔時(shí)激活一系列事件,這些事件被推給事件處理器,然后由事 件處理器提供對(duì)文檔內(nèi)容的訪問。SAX對(duì)內(nèi)存的要求通常會(huì)比較低,因?yàn)樗岄_發(fā)人員 自己來決定所要處理的tag。但用SAX解析器的時(shí)候編碼工作會(huì)比較困難,同時(shí)處理效 率也非常低,而且很難同時(shí)訪問同一個(gè)文檔中的多處不同數(shù)據(jù)。在手機(jī)等嵌入式系統(tǒng)中,已經(jīng)非常廣地使用XML文檔備份數(shù)據(jù)。這些備份數(shù)據(jù) 通常都需要整個(gè)文檔解析,而手機(jī)等嵌入式系統(tǒng)的內(nèi)存資源又十分緊張,因此以上兩種 解析方式都不能很好的滿足需求。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種解析數(shù)據(jù)的方法,其能高效的實(shí)現(xiàn)手機(jī)XML數(shù)據(jù)的解 析。本發(fā)明提供一種解析數(shù)據(jù)的方法,其適用于手機(jī)中的XML數(shù)據(jù)解析,包括以下 步驟1.1、根據(jù)預(yù)定需求確定所述XML數(shù)據(jù)中的必要元素節(jié)點(diǎn),并將其設(shè)置為標(biāo)志元 素節(jié)點(diǎn);1.2、解析所述XML數(shù)據(jù),在解析過程中,對(duì)所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)和標(biāo)志 元素節(jié)點(diǎn)進(jìn)行解析;1.3、通過應(yīng)用程序處理已解析的數(shù)據(jù);1.4、釋放所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)以及標(biāo)志元素點(diǎn)所占用的手機(jī)內(nèi)存。所述步驟1.2包括以下步驟
2.1、判斷解析的是否為所述XML數(shù)據(jù)的聲明節(jié)點(diǎn),若是則直接解析,若否則轉(zhuǎn) 下一步驟;2.2、判斷其是否為所述XML數(shù)據(jù)的元素節(jié)點(diǎn),若是則轉(zhuǎn)下步驟,若否則直接丟 棄;2.3、繼續(xù)判斷其是否為所述XML數(shù)據(jù)的標(biāo)志元素節(jié)點(diǎn),若是則進(jìn)行解析,若不 是則直接丟棄。所述步驟1.2中解析所述XML數(shù)據(jù)的關(guān)鍵字包括“< xml”、“? >”、 “<tag>” 和 “</tag>”、< ! [CDATA[string]]>,其中 tab 為任意符合 XML 標(biāo)簽規(guī)范的
字符串,string為任意字符串。所述XML數(shù)據(jù)的節(jié)點(diǎn)包括聲明節(jié)點(diǎn)、包含標(biāo)志元素節(jié)點(diǎn)的元素節(jié)點(diǎn)以及所述聲 明節(jié)點(diǎn)和元素節(jié)點(diǎn)之外的節(jié)點(diǎn)。采用本發(fā)明所述的一種解析數(shù)據(jù)的方法,其首先根據(jù)預(yù)定需求確定所述XML數(shù) 據(jù)中的必要元素節(jié)點(diǎn),并將其設(shè)置為標(biāo)志元素節(jié)點(diǎn);其次解析所述XML數(shù)據(jù),在解析過 程中,對(duì)所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)和標(biāo)志元素節(jié)點(diǎn)進(jìn)行解析;然后通過應(yīng)用程序處理已 解析的數(shù)據(jù);最后釋放所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)以及標(biāo)志元素點(diǎn)所占用的手機(jī)內(nèi)存。
圖1為本發(fā)明所述方法的流程圖;圖2為本發(fā)明一實(shí)施例中的解析XML數(shù)據(jù)時(shí)生成的節(jié)點(diǎn)樹。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例進(jìn)一步說明本發(fā)明的技術(shù)方案。參見圖1,本發(fā)明提供一種解析數(shù)據(jù)的方法100,其適用于手機(jī)中的XML數(shù)據(jù)解 析,包括以下步驟1.1、根據(jù)預(yù)定需求確定所述XML數(shù)據(jù)中的必要元素節(jié)點(diǎn),并將其設(shè)置為標(biāo)志元 素節(jié)點(diǎn)。所述XML數(shù)據(jù)的節(jié)點(diǎn)包括聲明節(jié)點(diǎn)、包含標(biāo)志元素節(jié)點(diǎn)的元素節(jié)點(diǎn)以及所述聲 明節(jié)點(diǎn)和元素節(jié)點(diǎn)之外的節(jié)點(diǎn)。1.2、解析所述XML數(shù)據(jù),在解析過程中,對(duì)所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)和標(biāo)志 元素節(jié)點(diǎn)進(jìn)行解析。最為一實(shí)施例,所述步驟1.2包括以下步驟2.1、判斷解析的是否為所述XML數(shù)據(jù)的聲明節(jié)點(diǎn),若是則直接解析,若否則轉(zhuǎn)
下一步驟。2.2、判斷其是否為所述XML數(shù)據(jù)的元素節(jié)點(diǎn),若是則轉(zhuǎn)下步驟,若否則直接丟棄。2.3、繼續(xù)判斷其是否為所述XML數(shù)據(jù)的標(biāo)志元素節(jié)點(diǎn),若是則進(jìn)行解析,若不 是則直接丟棄。所述步驟1.2中解析所述XML數(shù)據(jù)的關(guān)鍵字包括“< ? xml”、“? >”、 “<tag>” 和 “</tag>”、< ! [CDATA[string]]>,其中 tab 為任意符合 XML 標(biāo)簽規(guī)范的
字符串,string為任意字符串。
1.3、通過應(yīng)用程序處理已解析的數(shù)據(jù)。1.4、釋放所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)以及標(biāo)志元素點(diǎn)所占用的手機(jī)內(nèi)存。下面通過一具體實(shí)施例來進(jìn)行詳細(xì)說明手機(jī)聯(lián)系人的備份文件的電話本條目重復(fù)出現(xiàn),例如圖2中的格式的手機(jī)聯(lián)系 人備份文件phoneBook.xml < ? xml version=" 1.0〃 encoding = “ UTF—8" ? >< !-手機(jī)聯(lián)系人備份一><PhoneBook><PhoneBookField><N> 張三 </N><TEL>011-7777777</TEL><HOMETEL>01 l-7777788</HOMETEL>
<WORKTEL>01 l-8888888</WORKTEL><EMAIL>xxx@hotmai. com</EMAIL><POSTCODE>200000</POSTCODE><COMPANY>xx-company</COMPANY><DEPARTMENT>xx-department</DEPARTMENT><TITLE>CTO</TITLE><ADDRESS>上海市黃浦區(qū)北京東路XXX號(hào)</ADDRESS〉</PhoneBookField><PhoneBookField><TEL>021 -xxxxxx</TEL>
<HOMETEL>02 l-xxxxxx</HOMETEL><WORKTEL>011 -xxxxxx</WORKTEL><EM AIL>xxx@hotmai. com</EM AIL><POSTCODE>200001</P0STC0DE><COMPANY>xx-company</COMPANY><DEPARTMENT>xx-department</DEPARTMENT><TITLE>CTO</TITLE><ADDRESS>上海市黃浦區(qū)北京東路XXX號(hào)〈/ADDRESS〉</PhoneBookField></PhoneBook>針對(duì)該XML數(shù)據(jù)的解析過程見下第一步,根據(jù)具體XML數(shù)據(jù)和特定的應(yīng)用要求確定需要解析的標(biāo)志元素節(jié) 點(diǎn)。假設(shè)此時(shí)之需要<\¥01001£1>和<£1^八11>,則標(biāo)志元素節(jié)點(diǎn)為<PhoneBook>、 <PhoneBookField>> <N>、<WORKTEL> 禾Π <EMAIL>。第二步,需要讀入文件phoneBook.xml的字節(jié)流,給解析器傳入標(biāo)志元素節(jié)點(diǎn) <PhoneBook>、<PhoneBookField>> <N>、<WORKTEL> 禾Π <EMAIL>。參見圖 2,解析
器會(huì)生成圖2中的一顆節(jié)點(diǎn)樹。在解析過程中解析器忽略了 “其他類型節(jié)點(diǎn)” <! 一手機(jī)聯(lián)系人備份一>,也忽略了非標(biāo)志元素節(jié)點(diǎn)<TEL>、<HOMETEL>、<POSTCODE>、 〈COMPANY〉、〈DEPARTMENT〉、<TITLE> 和〈ADDRESS〉。第三步,在應(yīng)用程序中處理已解析的數(shù)據(jù)。第四步,釋放標(biāo)志聲明節(jié)點(diǎn)和標(biāo)志元素節(jié)點(diǎn)所占用的內(nèi)存。本技術(shù)領(lǐng)域中的普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,以上的實(shí)施例僅是用來說明本發(fā) 明,而并非用作為對(duì)本發(fā)明的限定,只要在本發(fā)明的實(shí)質(zhì)精神范圍內(nèi),對(duì)以上實(shí)施例的 變化、變型都將落在本發(fā)明的權(quán)利要求書范圍內(nèi)。
權(quán)利要求
1.一種解析數(shù)據(jù)的方法,其適用于手機(jī)中的XML數(shù)據(jù)解析,其特征在于,包括以下 步驟1.1、根據(jù)預(yù)定需求確定所述XML數(shù)據(jù)中的必要元素節(jié)點(diǎn),并將其設(shè)置為標(biāo)志元素節(jié)點(diǎn)。1.2、解析所述XML數(shù)據(jù),在解析過程中,對(duì)所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)和標(biāo)志元素 節(jié)點(diǎn)進(jìn)行解析;1.3、通過應(yīng)用程序處理已解析的數(shù)據(jù);1.4、釋放所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)以及標(biāo)志元素點(diǎn)所占用的手機(jī)內(nèi)存。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟1.2包括以下步驟2.1、判斷解析的是否為所述XML數(shù)據(jù)的聲明節(jié)點(diǎn),若是則直接解析,若否則轉(zhuǎn)下一 步驟;2.2、判斷其是否為所述XML數(shù)據(jù)的元素節(jié)點(diǎn),若是則轉(zhuǎn)下步驟,若否則直接丟棄;2.3、繼續(xù)判斷其是否為所述XML數(shù)據(jù)的標(biāo)志元素節(jié)點(diǎn),若是則進(jìn)行解析,若不是則直接丟棄。
3.如權(quán)利要求2或3所述的方法,其特征在于,所述步驟1.2中解析所述XML 數(shù)據(jù)的關(guān)鍵字包括“〈? xml”、“? >”、“<tag>” 和 “</tag>”、< ! [CDATA[string]]>,其中tab為任意符合XML標(biāo)簽規(guī)范的字符串,string為任意字符串。
4.如權(quán)利要求3所述的方法,其特征在于,所述XML數(shù)據(jù)的節(jié)點(diǎn)包括聲明節(jié)點(diǎn)、包 含標(biāo)志元素節(jié)點(diǎn)的元素節(jié)點(diǎn)以及所述聲明節(jié)點(diǎn)和元素節(jié)點(diǎn)之外的節(jié)點(diǎn)。
全文摘要
本發(fā)明揭示了一種解析數(shù)據(jù)的方法,其適用于手機(jī)中的XML數(shù)據(jù)解析,首先根據(jù)預(yù)定需求確定所述XML數(shù)據(jù)中的必要元素節(jié)點(diǎn),并將其設(shè)置為標(biāo)志元素節(jié)點(diǎn);其次解析所述XML數(shù)據(jù),在解析過程中,對(duì)所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)和標(biāo)志元素節(jié)點(diǎn)進(jìn)行解析;然后通過應(yīng)用程序處理已解析的數(shù)據(jù);最后釋放所述XML數(shù)據(jù)的聲明節(jié)點(diǎn)以及標(biāo)志元素點(diǎn)所占用的手機(jī)內(nèi)存。
文檔編號(hào)G06F17/22GK102012895SQ20101025768
公開日2011年4月13日 申請(qǐng)日期2010年8月19日 優(yōu)先權(quán)日2010年8月19日
發(fā)明者付波 申請(qǐng)人:上??岚尚畔⒓夹g(shù)有限公司