使用STM32或GD32解析xml格式数据
一、XML文件介紹
可擴展標記語言,標準通用標記語言的子集,簡稱XML。是一種用于標記電子文件使其具有結構性的標記語言。
在電子計算機中,標記指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種的信息比如文章等。它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。是Internet環境中跨平臺的、依賴于內容的技術,也是當今處理分布式結構信息的有效工具。早在1998年,W3C就發布了XML1.0規范,使用它來簡化Internet的文檔信息傳輸。
可擴展標記語言與Access,Oracle和SQL Server等數據庫不同,數據庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,可擴展標記語言僅僅是存儲數據。事實上它與其他數據表現形式最大的不同是:可擴展標記語言極其簡單,這是一個看上去有點瑣細的優點,但正是這點使它與眾不同。 [3]
XML的簡單易于在任何應用程序中讀/寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟件也支持其他的數據交換格式,但不久之后它們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS、Linux以及其他平臺下產生的信息結合,然后可以很容易加載XML數據到程序中并分析它,并以XML格式輸出結果。
特征:
XML具有以下特點:
(1) XML可以從HTML中分離數據。即能夠在HTML文件之外將數據存儲在XML文檔中,這樣可以使開發者集中精力使用HTML做好數據的顯示和布局,并確保數據改動時不會導致HTML文件也需要改動,從而方便維護頁面。XML也能夠將數據以“數據島”的形式存儲在HTML頁面中,開發者依然可以把精力集中到使用HTML格式化和顯示數據上。
(2) XML可用于交換數據。基于XML可以在不兼容的系統之間交換數據,計算機系統和數據庫系統所存儲的數據有多種形式,對于開發者來說,最耗時間的工作就是在遍布網絡的系統之間交換數據。把數據轉換為XML格式存儲將大大減少交換數據時的復雜性,還可以使這些數據能被不同的程序讀取。
(3) XML可應用于B2B中。例如在網絡中交換金融信息, 目前XML正成為遍布網絡的商業系統之間交換信息所使用的主要語言,許多與B2B有關的完全基于XML的應用程序正在開發中。
(4)利用XML可以共享數據。XML數據以純文本格式存儲,這使得XML更易讀、更便于記錄、更便于調試,使不同系統、不同程序之間的數據共享變得更加簡單。
(5) XML可以充分利用數據。XML是與軟件、硬件和應用程序無關的,數據可以被更多的用戶、設備所利用,而不僅僅限于基于HTML標準的瀏覽器。其他客戶端和應用程序可以把XML文檔作為數據源來處理,就像操作數據庫一樣,XML的數據可以被各種各樣的“閱讀器”處理。
(6) XML可以用于創建新的語言。比如,WAP和WML語言都是由XML發展來的。WML(Wireless Markup Language,無線標記語言)是用于標識運行于手持設備上(比如手機)的Intemet程序的工具,它就采用了XML的標準。
總之,XML使用一個簡單而又靈活的標準格式,為基于Web的應用提供了一個描述數據和交換數據的有效手段。但是,XML并非是用來取代HTML的。HTML著重如何描述將文件顯示在瀏覽器中,而XML與SGML相近,它著重描述如何將數據以結構化方式表示。
格式:
XML文件格式是純文本格式,在許多方面類似于HTML,XML由XML元素組成,每個XML元素包括一個開始標記(),一個結束標記()以及兩個標記之間的內容,例如,可以將XML元素標記為價格、訂單編號或名稱。標記是對文檔存儲格式和邏輯結構的描述。在形式上,標記中可能包括注釋、引用、字符數據段、起始標記、結束標記、空元素、文檔類型聲明( DTD)和序言。
具體規則如下:
1、必須有聲明語句。
XML聲明是XML文檔的第一句,其格式如下:<?xml version="1.0" encoding="utf-8"?>
2、注意大小寫
在XML文檔中,大小寫是有區別的。“A”和“a”是不同的標記。注意在寫元素時,前后標記的大小寫要保持一致。最好養成一種習慣,或者全部大寫,或者全部小寫,或者大寫第一個字母,這樣可以減少因為大小寫不匹配而產生的文檔錯誤。
3、XML文檔有且只有一個根元素
良好格式的XML文檔必須有一個根元素,就是緊接著聲明后面建立的第一個元素,其他元素都是這個根元素的子元素,根元素完全包括文檔中其他所有的元素。根元素的起始標記要放在所有其他元素的起始標記之前;根元素的結束標記要放在所有其他元素的結束標記之后。
4、屬性值使用引號
在HTML代碼里面,屬性值可以加引號,也可以不加。但是XML規定,所有屬性值必須加引號(可以是單引號,也可以是雙引號,建議使用雙引號),否則將被視為錯誤。
5、所有的標記必須有相應的結束標記
在HTML中,標記可以不成對出現,而在XML中,所有標記必須成對出現,有一個開始標記,就必須有一個結束標記,否則將被視為錯誤。
6、所有的空標記也必須被關閉
空標記是指標記對之間沒有內容的標記,比如“”等標記。在XML中,規定所有的標記必須有結束標記。
二、MINIXML庫介紹
大家百度一下了解一下嗎
三、解析過程
需要解析的xml數據:
解析代碼:
int main(void) {mxml_node_t *node, *tree;Cache_Enable(); //打開L1-CacheHAL_Init(); //初始化HAL庫Stm32_Clock_Init(160,5,2,4); //設置時鐘,400Mhzdelay_init(400); //延時初始化uart_init(115200); //串口初始化MPU_Memory_Protection(); //保護相關存儲區域mem_init();printf("mem_perused = %d\r\n",mem_perused());tree = mxmlLoadString(NULL, buf, MXML_TEXT_CALLBACK);//獲取根節點node = mxmlFindElement(tree, tree, "Fixture", NULL, NULL, MXML_DESCEND);printf("Company = %s\r\n", (char *)mxmlElementGetAttr(node, "Company"));printf("ShortName = %s\r\n", (char *)mxmlElementGetAttr(node, "ShortName"));printf("Name = %s\r\n", (char *)mxmlElementGetAttr(node, "Name")); printf("mem_perused = %d\r\n",mem_perused());while(1){delay_ms(500);} }解析結果:
四、完整工程下載
csdn付費下載:點擊我下載
免費下載:關注下方公眾號回復XML解析下載
總結
以上是生活随笔為你收集整理的使用STM32或GD32解析xml格式数据的全部內容,希望文章能夠幫你解決所遇到的問題。