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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ XML解析之TinyXML篇

發布時間:2025/4/16 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ XML解析之TinyXML篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近使用TinyXML進行C++ XML解析,感覺使用起來比較簡單,很容易上手,本文給出一個使用TinyXML進行XML解析的簡單例子,很多復雜的應用都可以基于本例子的方法來完成。以后的文章里會講解使用Xerces進行C++ XML解析的例子,希望大家一起交流。

??? TinyXML是一個開源的解析XML的解析庫,能夠用于C++,能夠在Windows或Linux中編譯。這個解析庫的模型通過解析XML文件,然后在內存中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹。

??? DOM模型即文檔對象模型,是將整個文檔分成多個元素(如書、章、節、段等),并利用樹型結構表示這些元素之間的順序關系以及嵌套包含關系。

??? 首先從網上下載TinyXML的庫,文件夾的名字是TinyXpath,在工程里做如下配置:

??? 在附加包含路徑里添加:你的tinyxpath路徑/tinyxpath/include

??? 在附加庫路徑里添加:你的tinyxpath路徑/tinyxpath/lib

??? 在對象/庫路徑里添加:tinyxpathd.lib,如果使用release版本,則是tinyxpath.lib。

??? 另外,由于我開發的項目是多線程的,所以設置了多線程的環境,因此使用TinyXML沒有出現問題。本人將TinyXML寫在一個單獨的C++工程進行測試,發現如果不設置多線程的環境,會出現鏈接錯誤。我覺得原因可能是TinyXML使用了多線程環境,因此需要設置多線程的環境。在工程/設置下的C/C++選項卡中,選擇Code Generation,在Use run-time library中選擇Debug MultiThreaed DLL即可。

??? 本例的XML文件Students.xml如下:

??? <Class name="計算機軟件班">

??? <Students>

??? <student name="張三" studentNo="13031001" sex="男" age="22">

??? <phone>88208888</phone>

??? <address>西安市太白南路二號</address>

??? </student>

??? <student name="李四" studentNo="13031002" sex="男" age="20">

??? <phone>88206666</phone>

??? <address>西安市光華路</address>

??? </student>

??? </Students>

??? </Class>

??? 程序代碼XmlParseExample.cpp如下所示:

??????? 程序運行結果如下:

#include <iostream>#include <string>#include <tinyxml.h>using std::string;int main(){TiXmlDocument* myDocument = new TiXmlDocument();myDocument->LoadFile("Students.xml");TiXmlElement* rootElement = myDocument->RootElement(); //ClassTiXmlElement* studentsElement = rootElement->FirstChildElement(); //StudentsTiXmlElement* studentElement = studentsElement->FirstChildElement(); //Studentswhile ( studentElement ) {TiXmlAttribute* attributeOfStudent = studentElement->FirstAttribute(); //獲得student的name屬性while ( attributeOfStudent ) {std::cout 《 attributeOfStudent->Name() 《 " : " 《 attributeOfStudent->Value() 《 std::endl;attributeOfStudent = attributeOfStudent->Next();}TiXmlElement* phoneElement = studentElement->FirstChildElement();//獲得student的phone元素std::cout 《 "phone" 《 " : " 《 phoneElement->GetText() 《 std::endl;TiXmlElement* addressElement = phoneElement->NextSiblingElement();std::cout 《 "address" 《 " : " 《 phoneElement->GetText() 《 std::endl;studentElement = studentElement->NextSiblingElement();}return 0;}

??? name : 張三

??? studentNo : 13031001

??? sex : 男

??? age : 22

??? phone : 88208888

??? address : 88208888

??? name : 李四

??? studentNo : 13031002

??? sex : 男

??? age : 20

??? phone : 88206666

??? address : 88206666

本例中使用的是對xml文件進行解析,很容易掌握,但是很多開發人員不知道如何對xml 字符流(非xml文件)進行解析,我看了TinyXML提供的源代碼,里面可以使用如下方法對xml流解析。對應于上例,代碼如下:

??? string xmlString =

??? "<Class name=\"計算機軟件班\">\

??? <Students>\

??? <student name=\"張三\" studentNo=\"13031001\" sex=\"男\" age=\"22\">\

??? <phone>88208888</phone>\

??? <address>西安市太白南路二號</address>\

??? </student>\

??? <student name=\"李四\" studentNo=\"13031002\" sex=\"男\" age=\"20\">\

??? <phone>88206666</phone>\

??? <address>西安市光華路</address>\

??? </student>\

??? </Students>\

??? </Class>";

??? TiXmlDocument* myDocument = new TiXmlDocument();

??? myDocument->Parse(xmlString.c_str());

??? 使用Parse函數就可以解析XML字符流了,這是很多開發者不太熟悉的情況。

??? 如果開發者開發特定應用,就可以使用上述類似方法,可能不需要完全處理每一個屬性,比如可以對屬性名進行判斷,只處理自己需要的屬性,或者自己需要的xml元素。還可以使用TinyXML的方法創建xml元素和xml屬性,或者設置xml元素和屬性對應的值,等等,如果讀者想要類似的例子,可以留言寫出。

??? 下面介紹TinyXML的一些類。在TinyXML中,根據XML的各種元素來定義了一些類:

??? TiXmlBase:整個TinyXML模型的基類。

??? TiXmlAttribute:對應于XML中的元素的屬性。

??? TiXmlNode:對應于DOM結構中的節點。

??? TiXmlComment:對應于XML中的注釋

??? TiXmlDeclaration:對應于XML中的申明部分,<?versiong="1.0" ?>。

??? TiXmlDocument:對應于XML的整個文檔。

??? TiXmlElement:對應于XML的元素。

??? TiXmlText:對應于XML的文字部分

??? TiXmlUnknown:對應于XML的未知部分。

??? TiXmlHandler:定義了針對XML的一些操作。

總結

以上是生活随笔為你收集整理的C++ XML解析之TinyXML篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜成人免费影院 | 96国产精品 | 人操人视频 | 一本色道久久综合亚洲精品按摩 | 中文字幕亚洲精品在线观看 | 欧美影院一区二区三区 | 久草综合在线 | 青青免费视频 | 六月丁香啪啪 | 欧美一区二区三区爽爽爽 | 中文字幕日产av | 欧美在线视频免费播放 | 国产成人无码精品 | 久草视频免费播放 | 在线观看av不卡 | 人人澡人人澡 | 人妻换人妻仑乱 | 粉嫩av一区 | 神马久久午夜 | 中文字幕三级视频 | 国产精品国产三级国产在线观看 | 色无极亚洲 | 国产在线视频一区二区 | 国产精品区一区二 | 免费看大片a | 91精品国产自产在线观看 | 伊人网在线播放 | 夜夜爽av | 72种无遮挡啪啪的姿势 | 67194少妇在线观看 | www.好了av| 成人自拍视频在线观看 | 人人爽人人爽人人片av | 色婷婷精品国产一区二区三区 | 欧美12--15处交性娇小 | 亚洲福利在线播放 | 久久久久免费观看 | 两性免费视频 | 国产一级二级三级视频 | 亚洲一区在线免费观看 | 特大黑人娇小亚洲女 | 天堂久久网 | 在线观看av的网址 | 中文在线视频观看 | 奴性白洁会所调教 | 超能一家人电影免费喜剧在线观看 | 操到喷水 | 熟女少妇内射日韩亚洲 | 国产福利午夜 | 久久综合狠狠综合久久综合88 | 特黄视频在线观看 | 操碰视频在线 | 青青草91久久久久久久久 | 国产寡妇色xxⅹ交肉视频 | 日韩午夜片 | 亚洲中文字幕一区二区 | 国产成人无码www免费视频播放 | 在线播放你懂的 | 91九色蝌蚪视频 | 涩涩av| 精品国产aⅴ一区二区三区东京热 | 久久这里有 | 久久精品免费看 | 国产无玛| 亚洲精品乱码久久久久 | 国产三级在线观看完整版 | 暖暖av| 精品国产91乱码一区二区三区 | 狠狠躁狠狠躁视频专区 | 亚洲AV无码国产成人久久 | jizz日本在线播放 | 秋霞成人午夜伦在线观看 | 熟女人妻在线视频 | 日韩毛片基地 | 性视频免费看 | 又色又爽又黄无遮挡的免费视频 | 中国av一区二区 | xxxxwww一片 | 免费观看成人在线视频 | 一本久久久久 | 久热精品在线观看视频 | 欧美中文字幕在线播放 | 亚洲福利在线观看 | 成人黄页 | 久草国产在线视频 | 日本美女黄视频 | 久久亚洲精少妇毛片午夜无码 | 边啃奶头边躁狠狠躁 | 香港a毛片 | 亚洲国产精品成人午夜在线观看 | 国产激情精品一区二区三区 | 午夜视频黄| 懂色中文一区二区在线播放 | 少妇熟女一区二区 | 污视频免费网站 | 欧美aⅴ在线 | 99精品一级欧美片免费播放 | 免费国产精品视频 | www.亚洲视频 |