專利名稱:一種xml格式嵌入式設(shè)備特征信息解析方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式軟件,具體涉及一種XML格式嵌入式設(shè)備特征信息 解析方法。
背景技術(shù):
在嵌入式設(shè)備中處理的相關(guān)信息中, 一些信息是與設(shè)備本身特性相關(guān)的 固定特征數(shù)據(jù),例如生產(chǎn)日期等。這些信息與具體的某個設(shè)備相關(guān),而不 是某一類設(shè)備的公共信息。 一般的設(shè)備管理控制系統(tǒng)保存的信息是針對某一 類設(shè)備的信息,將設(shè)備的特征信息保存到設(shè)備管理控制系統(tǒng)中是不合理的, 體現(xiàn)不出不同設(shè)備在某些特征上的差異性。隨著嵌入式設(shè)備的日益復(fù)雜,設(shè) 備的特征信息量越來越大。因此這類特征信息需要保存到非易失存儲器中 (例如FLASH),這樣既能存儲信息量較大的信息,又保證設(shè)備掉電不會 丟失。存儲方式上一般采用某種固定格式進行存儲,以方便讀取和修改。XML是W3C定義的一種標準語言,具有可擴展性、平臺獨立性、并且 支持國際化和地區(qū)化的特點,因此目前很多嵌入式設(shè)備采用XML作為設(shè)備 信息保存的格式。但是XML的標準規(guī)范比較龐雜,如果嚴格按照XML的 標準規(guī)范進行解析和驗證,對軟硬件資源要求較高,從而難以滿足軟硬件資 源相對緊張的嵌入式設(shè)備。發(fā)明內(nèi)容本發(fā)明需要解決的技術(shù)問題是提供一種XML格式嵌入式設(shè)備特征信息 解析方法,能夠簡化解析,降低解析對嵌入式系統(tǒng)對軟硬件資源的要求。本發(fā)明的上述技術(shù)問題這樣解決,提供一種XML格式嵌入式設(shè)備特征 信息解析方法,包括以下步驟 1.1) 根據(jù)需要解析的XML格式嵌入式設(shè)備特征信息長度位于其對應(yīng)長 度范圍選擇進行解析;1.2) 將被解析的XML格式嵌入式設(shè)備特征信息簡化為節(jié)點集合并按聲 明類型、元素類型和不明類型進行區(qū)分;1.3) 根據(jù)節(jié)點類型分類解析或處理各節(jié)點并鏈接各節(jié)點,主要鏈接元素 類型節(jié)點,為了一致也可將聲明類型節(jié)點一起鏈接;1.4) 將各節(jié)點信息映射到預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)中并從該數(shù)據(jù)結(jié)構(gòu)獲取信息。按照本發(fā)明提供的解析方法,該解析方法還包括根據(jù)所述預(yù)先設(shè)定的數(shù) 據(jù)結(jié)構(gòu)已經(jīng)寫入信息且未重寫直接從所述數(shù)據(jù)結(jié)構(gòu)獲取信息;所述需要解析 即所述預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)未寫入或需要重新寫入信息。按照本發(fā)明提供的解析方法,所述步驟l.l)還包括根據(jù)XML格式嵌入 式設(shè)備特征信息長度超出對應(yīng)長度范圍直接退出解析。按照本發(fā)明提供的解析方法,所述長度范圍由預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)及其 允許擴展范圍決定,即所述預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)可以擴展變化但不允許無 限制擴展;擴展變化時需要修訂該數(shù)據(jù)結(jié)構(gòu)。按照本發(fā)明提供的解析方法,所述步驟1.2)中的簡化包括遍歷所述XML 格式嵌入式設(shè)備特征信息和查找對應(yīng)關(guān)鍵字。按照本發(fā)明提供的解析方法,所述關(guān)鍵字包括"<"和"? xml"。按照本發(fā)明提供的解析方法,所述步驟1.3)包括忽略或不解析不明類型 節(jié)點,如果全部是不明類型節(jié)點才退出解析。按照本發(fā)明提供的解析方法,所述步驟1.3)包括通過遍歷節(jié)點和查找 對應(yīng)關(guān)鍵字對聲明類型或元素類型節(jié)點進行解析或處理。按照本發(fā)明提供的解析方法,所述關(guān)鍵字包括"? >" 、 "version"、 ">"或與"<v>"對應(yīng)的"</v>";其中v代指任意字符。按照本發(fā)明提供的解析方法,所述元素類型節(jié)點一般為多個,包括一個 ^f艮節(jié)點和若干子節(jié)點或子子節(jié)點。 按照本發(fā)明提供的解析方法,所述聲明類型節(jié)點為 一 個。 本發(fā)明提供的一種XML格式嵌入式設(shè)備特征信息解析方法,只對限定范圍內(nèi)的XML文檔解析并利用三種節(jié)點類型簡化解析,從而能在軟硬件資 源較緊張的嵌入式設(shè)備中、較好地解析以XML為格式保存的設(shè)備特征信息, 滿足實際需要。
下面結(jié)合附圖和具體實施例進一步對本發(fā)明進行詳細說明。 圖1是是本發(fā)明解析方法處理流程示意圖。 圖2是本發(fā)明具體實施例處理流程示意圖。
具體實施方式
首先,說明本發(fā)明主要思想根據(jù)設(shè)備的現(xiàn)有資源對設(shè)備特征信息的規(guī)模進行限定,只對限定范圍內(nèi) 的XML文檔解析,從而盡可能使用最少資源來解析信息;解析時采用簡單 的XML解析規(guī)則,即將XML文檔簡化為幾種簡單類型的節(jié)點集合,將這 幾種類型的節(jié)點使用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)進行保存,只是類型上進行區(qū)分,然后 利用各個節(jié)點之間的在XML中的位置關(guān)系通過鏈表進行鏈接;解析完成后, 將解析結(jié)果映射到預(yù)先設(shè)定好的數(shù)據(jù)結(jié)構(gòu)中,在特征信息已寫入且無須重新 寫入時,可直接從該數(shù)據(jù)結(jié)構(gòu)中獲取信息,而不需要再次解析。第二步,說明本發(fā)明XML格式嵌入式設(shè)備特征信息解析方法的主要步 驟,如圖1所示,包括第一步從非易失存儲器中讀取XML字符流,并獲取字符流長度值, 比較預(yù)先限定值,若超出限定范圍則退出解析,反之則轉(zhuǎn)入第二步;第二步設(shè)置一個文檔節(jié)點作為節(jié)點鏈表L的頭節(jié)點,簡化XML節(jié)點 定義類型,定義節(jié)點類型有聲明類型D、元素類型E、不明類型U三種, 遍歷XML字符流,定義當前字符的節(jié)點類型,進入第三步;第三步根據(jù)節(jié)點類型,繼續(xù)遍歷查找字符,分類解析或處理節(jié)點;其
中如果D節(jié)點存在,則有且只有一個,并且是整個文檔的第一個節(jié)點;如 果是E節(jié)點,則可以嵌套子元素節(jié)點;如果是U節(jié)點則退出解析;處理E 節(jié)點時對元素名稱、元素值、屬性名稱、屬性值等分別進行-驗證;將當前節(jié) 點鏈接到L尾端,同時轉(zhuǎn)入第四步;第四步設(shè)置一個針對設(shè)備特征信息的數(shù)據(jù)結(jié)構(gòu)T,將鏈表中的當前節(jié) 點信息適配到該數(shù)據(jù)結(jié)構(gòu)中;遍歷結(jié)束后,轉(zhuǎn)入第五步;第五步如果設(shè)備特征信息未發(fā)生改變,則第一步到第四步只需進行一 次,每次只從T中獲取信息,直至特征信息發(fā)生改變,則將轉(zhuǎn)入第一步。最后,結(jié)合具體實施例詳細說明本發(fā)明SDH設(shè)備單板的單板信息有生產(chǎn)條碼、生產(chǎn)日期、PCB編碼等。例 如以下格式表示單板信息< xml version="1.0" encoding="UTF-8" > <BDINFO><SN〉 100000000000000000</SN><DT>2006-01-01</DT><PCBNO>OL 16-111111111 </PCBNO><BDNAME>OL 16PAX</BDNAME><PORTNO=T><SV>1.222</SV></PORT></BDINFO>其中〈 xml version="1.0" encoding二"UTF-8" 〉表示XML的聲明部分,通 常聲明該文檔的版本(version),編碼方式(encoding)等等。從〈BDINFO 〉到〈/BDINFO >是單板信息的主體部分。其中〈SN〉表示單板生產(chǎn)條碼, 〈DT〉表示單板生產(chǎn)曰期,〈PCBNO表示PCB編碼,〈BDNAME〉表示單板名稱。通過XML寫入軟件將XML文檔寫入單板FLASH中。解析和驗證FLASH中的單板信息,其具體處理步驟,如圖2所示,包括第一步從單板FLASH中讀取單板信息,首先驗證字符流長度是否在 規(guī)定的長度范圍內(nèi),如果超出范圍則退出解析,反之轉(zhuǎn)入第二步;第二步設(shè)置一個文檔節(jié)點作為節(jié)點鏈表L的頭節(jié)點,遍歷XML字符, 獲取節(jié)點類型2.1) 查找XML字符流的第一個字符,判斷第一個字符是否為"<",如 果不是則將節(jié)點類型置為不明類型UNKOWN,并置不明類型標志,如果是 則繼續(xù)查找后面的字符,判斷后面字符是否為空,為空則退出解析,不為空 則判斷后面的字符是否與" xml"匹配,如果是轉(zhuǎn)入步驟2.2),反之轉(zhuǎn)入步 驟2.3);2.2) 將節(jié)點類型置為聲明類型DECLARATION,同時判斷是否置過聲明 類型或其他類型標志,如果置過則退出解析,反之置聲明類型標志;2.3) 將節(jié)點類型置為元素類型ELEMENT; 獲取節(jié)點類型后,進入第三步;第三步根據(jù)節(jié)點類型,繼續(xù)遍歷查找字符流,分類解析或處理該節(jié)點 3.1 )如果該節(jié)點為UNKOWN,忽略或不解析該節(jié)點;3.2) 如果該節(jié)點為DECLARATION,查找是否有"?>"字符,如果有則 記錄"< xml"與" >,,之間的字符,同時判斷這些字符中是否與聲明屬性 關(guān)鍵字匹配(例如"version" 、 "encoding"等),如果有則驗證關(guān)鍵字 對應(yīng)的值是否超出屬性值長度范圍,沒有超出則記錄關(guān)鍵字和對應(yīng)的關(guān)鍵字 的值(例如version的值為"1.0")到該節(jié)點數(shù)據(jù)結(jié)構(gòu)中,反之退出解析; 處理完成后將該節(jié)點鏈接到L尾端,轉(zhuǎn)入第二步;3.3) 如果該節(jié)點為ELEMENT,查找是否有">"字符,如果有則記錄"<" 和">"之間的字符串為V(例如"SN"),繼續(xù)往后查找是否有字符"</V>" 與"<V>"匹配,不匹配則退出解析,匹配則驗證V是否超出元素名稱長度 范圍,沒有超出范圍則將V記錄至節(jié)點數(shù)據(jù)結(jié)構(gòu)的元素名稱中,反之退出 解析;如果有V中有屬性(例如NO= 'T,),驗證和解析屬性名稱和屬 性值;記錄"〈V〉,,與"々V〉,,之間的字符串S(例如"100000000000000000"),
判斷S的第一個字符是否為"<",如果是則置新節(jié)點為ELEMENT并記錄 該節(jié)點為前一個節(jié)點的子節(jié)點關(guān)系(例如〈PORTNC^ "1"〉是〈BDINFO 的子節(jié)點),轉(zhuǎn)入3,反之驗證S是否超出元素值長度范圍,沒有超出范圍 則將S記錄至節(jié)點數(shù)據(jù)結(jié)構(gòu)的元素值中,反之退出解析;處理完成后將該節(jié) 點鏈接到L尾端,同時將該節(jié)點與前一個節(jié)點的節(jié)點關(guān)系記錄下來,轉(zhuǎn)入第 二步;每生成一個節(jié)點,根據(jù)節(jié)點關(guān)系記錄該節(jié)點的路徑信息(從根節(jié)點到 該節(jié)點需要經(jīng)過的節(jié)點,例如從根節(jié)點〈BDINF0〉到<SV>的路徑為 "BDINFO->PORT->SV,,),同時轉(zhuǎn)入第四步;第四步設(shè)置一個針對單板信息的數(shù)據(jù)結(jié)構(gòu)T,將節(jié)點中的信息適配到 T中;完成適配后,轉(zhuǎn)入第五步;第五步如果單板信息未發(fā)生改變,即已寫入且無需重新寫入,則第 一步到第四步只需進行一次,每次只從T中獲取信息,如果單板信息發(fā)生變 化,即需要重新寫入,將通知解析器轉(zhuǎn)入第一步重新解析。
權(quán)利要求
1、 一種XML格式嵌入式設(shè)備特征信息解析方法,其特征在于,包 括以下步驟1.1) 根據(jù)需要解析的XML格式嵌入式設(shè)備特征信息長度位于其對應(yīng) 長度范圍選擇進行解析;1.2) 將被解析的XML格式嵌入式設(shè)備特征信息簡化為節(jié)點集合并按 聲明類型、元素類型和不明類型進行區(qū)分;1.3) 根據(jù)節(jié)點類型分類解析或處理各節(jié)點并鏈接各元素類型節(jié)點;1.4) 將各節(jié)點信息映射到預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)中并從該數(shù)據(jù)結(jié)構(gòu)獲 取信息。
2、 根據(jù)權(quán)利要求1所述解析方法,其特征在于,該解析方法還包括 根據(jù)所述預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)已經(jīng)寫入信息且未重寫直接從所述數(shù)據(jù)結(jié)構(gòu) 獲取信息。
3、 根據(jù)權(quán)利要求1所述解析方法,其特征在于,所述步驟l.l)還包 括根據(jù)XML格式嵌入式設(shè)備特征信息長度超出對應(yīng)長度范圍直接退出解 析。
4、 根據(jù)權(quán)利要求1或3所述解析方法,其特征在于,所述長度范圍 由預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)及其允許擴展范圍決定,所述預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)可 以擴展。
5、 根據(jù)權(quán)利要求1所述解析方法,其特征在于,所述步驟1.2)中的 簡化包括遍歷所述XML格式嵌入式設(shè)備特征信息和查找對應(yīng)關(guān)鍵字。
6、 根據(jù)權(quán)利要求5所述解析方法,其特征在于,所述關(guān)鍵字包括"<" 和"? xml"。
7、 根據(jù)權(quán)利要求1所述解析方法,其特征在于,所述步驟1.3)包括 忽略或不解析不明類型節(jié)點。
8、 根據(jù)權(quán)利要求1所述解析方法,其特征在于,所述步驟1.3)包括通過遍歷節(jié)點和查找對應(yīng)關(guān)鍵字對聲明類型或元素類型節(jié)點進行解析或處 理。
9、 根據(jù)權(quán)利要求8所述解析方法,其特征在于,所述關(guān)鍵字包括"?>"、"version"、">,,或與"<v>,,對應(yīng)的"</v>,,。
10、 根據(jù)權(quán)利要求1所述解析方法,其特征在于,所述元素類型節(jié)點 包括一個根節(jié)點和若干子節(jié)點或子子節(jié)點。
全文摘要
本發(fā)明涉及一種XML格式嵌入式設(shè)備特征信息解析方法,包括根據(jù)XML格式嵌入式設(shè)備特征信息長度位于其對應(yīng)長度范圍選擇進行解析;將被解析的XML格式嵌入式設(shè)備特征信息簡化為節(jié)點集合并按聲明類型、元素類型和不明類型進行區(qū)分;根據(jù)節(jié)點類型分類解析或處理各節(jié)點并通過鏈接各節(jié)點;將各節(jié)點信息映射到預(yù)先設(shè)定的數(shù)據(jù)結(jié)構(gòu)中并從該數(shù)據(jù)結(jié)構(gòu)獲取信息。這種方法僅對限定范圍內(nèi)的XML文檔解析并利用三種簡單節(jié)點類型進行簡化,從而能在軟硬件資源較緊張的嵌入式設(shè)備中獲得很好使用。
文檔編號G06F17/30GK101145157SQ20071010846
公開日2008年3月19日 申請日期2007年6月14日 優(yōu)先權(quán)日2007年6月14日
發(fā)明者楊宇曦 申請人:中興通訊股份有限公司