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