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