日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用STM32或GD32解析xml格式数据

發(fā)布時(shí)間:2023/12/31 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用STM32或GD32解析xml格式数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、XML文件介紹
   可擴(kuò)展標(biāo)記語言,標(biāo)準(zhǔn)通用標(biāo)記語言的子集,簡(jiǎn)稱XML。是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言。
   在電子計(jì)算機(jī)中,標(biāo)記指計(jì)算機(jī)所能理解的信息符號(hào),通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種的信息比如文章等。它可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語言進(jìn)行定義的源語言。 它非常適合萬維網(wǎng)傳輸,提供統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。是Internet環(huán)境中跨平臺(tái)的、依賴于內(nèi)容的技術(shù),也是當(dāng)今處理分布式結(jié)構(gòu)信息的有效工具。早在1998年,W3C就發(fā)布了XML1.0規(guī)范,使用它來簡(jiǎn)化Internet的文檔信息傳輸。
   可擴(kuò)展標(biāo)記語言與Access,Oracle和SQL Server等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強(qiáng)有力的數(shù)據(jù)存儲(chǔ)和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,可擴(kuò)展標(biāo)記語言僅僅是存儲(chǔ)數(shù)據(jù)。事實(shí)上它與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:可擴(kuò)展標(biāo)記語言極其簡(jiǎn)單,這是一個(gè)看上去有點(diǎn)瑣細(xì)的優(yōu)點(diǎn),但正是這點(diǎn)使它與眾不同。 [3]
XML的簡(jiǎn)單易于在任何應(yīng)用程序中讀/寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應(yīng)用軟件也支持其他的數(shù)據(jù)交換格式,但不久之后它們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS、Linux以及其他平臺(tái)下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析它,并以XML格式輸出結(jié)果。
特征
XML具有以下特點(diǎn):
   (1) XML可以從HTML中分離數(shù)據(jù)。即能夠在HTML文件之外將數(shù)據(jù)存儲(chǔ)在XML文檔中,這樣可以使開發(fā)者集中精力使用HTML做好數(shù)據(jù)的顯示和布局,并確保數(shù)據(jù)改動(dòng)時(shí)不會(huì)導(dǎo)致HTML文件也需要改動(dòng),從而方便維護(hù)頁面。XML也能夠?qū)?shù)據(jù)以“數(shù)據(jù)島”的形式存儲(chǔ)在HTML頁面中,開發(fā)者依然可以把精力集中到使用HTML格式化和顯示數(shù)據(jù)上。
   (2) XML可用于交換數(shù)據(jù)。基于XML可以在不兼容的系統(tǒng)之間交換數(shù)據(jù),計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫系統(tǒng)所存儲(chǔ)的數(shù)據(jù)有多種形式,對(duì)于開發(fā)者來說,最耗時(shí)間的工作就是在遍布網(wǎng)絡(luò)的系統(tǒng)之間交換數(shù)據(jù)。把數(shù)據(jù)轉(zhuǎn)換為XML格式存儲(chǔ)將大大減少交換數(shù)據(jù)時(shí)的復(fù)雜性,還可以使這些數(shù)據(jù)能被不同的程序讀取。
   (3) XML可應(yīng)用于B2B中。例如在網(wǎng)絡(luò)中交換金融信息, 目前XML正成為遍布網(wǎng)絡(luò)的商業(yè)系統(tǒng)之間交換信息所使用的主要語言,許多與B2B有關(guān)的完全基于XML的應(yīng)用程序正在開發(fā)中。
(4)利用XML可以共享數(shù)據(jù)。XML數(shù)據(jù)以純文本格式存儲(chǔ),這使得XML更易讀、更便于記錄、更便于調(diào)試,使不同系統(tǒng)、不同程序之間的數(shù)據(jù)共享變得更加簡(jiǎn)單。
   (5) XML可以充分利用數(shù)據(jù)。XML是與軟件、硬件和應(yīng)用程序無關(guān)的,數(shù)據(jù)可以被更多的用戶、設(shè)備所利用,而不僅僅限于基于HTML標(biāo)準(zhǔn)的瀏覽器。其他客戶端和應(yīng)用程序可以把XML文檔作為數(shù)據(jù)源來處理,就像操作數(shù)據(jù)庫一樣,XML的數(shù)據(jù)可以被各種各樣的“閱讀器”處理。
   (6) XML可以用于創(chuàng)建新的語言。比如,WAP和WML語言都是由XML發(fā)展來的。WML(Wireless Markup Language,無線標(biāo)記語言)是用于標(biāo)識(shí)運(yùn)行于手持設(shè)備上(比如手機(jī))的Intemet程序的工具,它就采用了XML的標(biāo)準(zhǔn)。
總之,XML使用一個(gè)簡(jiǎn)單而又靈活的標(biāo)準(zhǔn)格式,為基于Web的應(yīng)用提供了一個(gè)描述數(shù)據(jù)和交換數(shù)據(jù)的有效手段。但是,XML并非是用來取代HTML的。HTML著重如何描述將文件顯示在瀏覽器中,而XML與SGML相近,它著重描述如何將數(shù)據(jù)以結(jié)構(gòu)化方式表示。
格式:
   XML文件格式是純文本格式,在許多方面類似于HTML,XML由XML元素組成,每個(gè)XML元素包括一個(gè)開始標(biāo)記(),一個(gè)結(jié)束標(biāo)記()以及兩個(gè)標(biāo)記之間的內(nèi)容,例如,可以將XML元素標(biāo)記為價(jià)格、訂單編號(hào)或名稱。標(biāo)記是對(duì)文檔存儲(chǔ)格式和邏輯結(jié)構(gòu)的描述。在形式上,標(biāo)記中可能包括注釋、引用、字符數(shù)據(jù)段、起始標(biāo)記、結(jié)束標(biāo)記、空元素、文檔類型聲明( DTD)和序言。
具體規(guī)則如下:
1、必須有聲明語句。
XML聲明是XML文檔的第一句,其格式如下:<?xml version="1.0" encoding="utf-8"?>
2、注意大小寫
  在XML文檔中,大小寫是有區(qū)別的。“A”和“a”是不同的標(biāo)記。注意在寫元素時(shí),前后標(biāo)記的大小寫要保持一致。最好養(yǎng)成一種習(xí)慣,或者全部大寫,或者全部小寫,或者大寫第一個(gè)字母,這樣可以減少因?yàn)榇笮懖黄ヅ涠a(chǎn)生的文檔錯(cuò)誤。
3、XML文檔有且只有一個(gè)根元素
  良好格式的XML文檔必須有一個(gè)根元素,就是緊接著聲明后面建立的第一個(gè)元素,其他元素都是這個(gè)根元素的子元素,根元素完全包括文檔中其他所有的元素。根元素的起始標(biāo)記要放在所有其他元素的起始標(biāo)記之前;根元素的結(jié)束標(biāo)記要放在所有其他元素的結(jié)束標(biāo)記之后。
4、屬性值使用引號(hào)
  在HTML代碼里面,屬性值可以加引號(hào),也可以不加。但是XML規(guī)定,所有屬性值必須加引號(hào)(可以是單引號(hào),也可以是雙引號(hào),建議使用雙引號(hào)),否則將被視為錯(cuò)誤。
5、所有的標(biāo)記必須有相應(yīng)的結(jié)束標(biāo)記
  在HTML中,標(biāo)記可以不成對(duì)出現(xiàn),而在XML中,所有標(biāo)記必須成對(duì)出現(xiàn),有一個(gè)開始標(biāo)記,就必須有一個(gè)結(jié)束標(biāo)記,否則將被視為錯(cuò)誤。
6、所有的空標(biāo)記也必須被關(guān)閉
 空標(biāo)記是指標(biāo)記對(duì)之間沒有內(nèi)容的標(biāo)記,比如“”等標(biāo)記。在XML中,規(guī)定所有的標(biāo)記必須有結(jié)束標(biāo)記。
 二、MINIXML庫介紹
 大家百度一下了解一下嗎
 三、解析過程
 需要解析的xml數(shù)據(jù):

const char buf[]={"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Fixture Name=\"xhh\" ShortName=\"xp\" Company=\"guangzou\">\r\n</Fixture>"};

解析代碼:

int main(void) {mxml_node_t *node, *tree;Cache_Enable(); //打開L1-CacheHAL_Init(); //初始化HAL庫Stm32_Clock_Init(160,5,2,4); //設(shè)置時(shí)鐘,400Mhzdelay_init(400); //延時(shí)初始化uart_init(115200); //串口初始化MPU_Memory_Protection(); //保護(hù)相關(guān)存儲(chǔ)區(qū)域mem_init();printf("mem_perused = %d\r\n",mem_perused());tree = mxmlLoadString(NULL, buf, MXML_TEXT_CALLBACK);//獲取根節(jié)點(diǎn)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);} }

解析結(jié)果:

四、完整工程下載
csdn付費(fèi)下載:點(diǎn)擊我下載
免費(fèi)下載:關(guān)注下方公眾號(hào)回復(fù)XML解析下載
 

總結(jié)

以上是生活随笔為你收集整理的使用STM32或GD32解析xml格式数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。