8.7分
出處:2345軟體大全
人氣:4922
英語口語紅寶書2.1
愛主題1.6
c/c++程式設計學習與實驗系統2013.3
codelite ide for c/c++v3.5.5377
c/c++程式設計學習與實驗系統v2011.2 綠色版
dev c++ 5v4.9.9.2
最近使用tinyxml進行c++ xml解析,感覺使用起來比較簡單,很容易上手,本文給出乙個使用tinyxml進行xml解析的簡單例子,很多複雜的應用都可以基於本例子的方法來完成。以後的文章裡會講解使用xerces進行c++ xml解析的例子,希望大家一起交流。
tinyxml是乙個開源的解析xml的解析庫,能夠用於c++,能夠在windows或linux中編譯。這個解析庫的模型通過解析xml檔案,然後在記憶體中生成dom模型,從而讓我們很方便的遍歷這棵xml樹。
dom模型即文件物件模型,是將整個文件分成多個元素(如書、章、節、段等),並利用樹型結構表示這些元素之間的順序關係以及巢狀包含關係。
在附加包含路徑裡新增:你的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如下:
88208888
西安市太白南路二號
88206666
西安市光華路
程式**xmlparseexample.cpp如下所示:
#include
#include
#include
using std::string;
int main()
tixmldocument* mydocument = new tixmldocument();
mydocument->loadfile("students.xml");
tixmlelement* rootelement = mydocument->rootelement(); //class
tixmlelement* studentselement = rootelement->firstchildelement(); //students
tixmlelement* studentelement = studentselement->firstchildelement(); //students
while ( 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
*** : 男
age : 22
phone : 88208888
address : 88208888
name : 李四
studentno : 13031002
*** : 男
age : 20
phone : 88206666
address : 88206666
本例中使用的是對xml檔案進行解析,很容易掌握,但是很多開發人員不知道如何對xml 字元流(非xml檔案)進行解析,我看了tinyxml提供的源**,裡面可以使用如下方法對xml流解析。對應於上例,**如下:
string xmlstring =
"88208888
西安市太白南路二號
88206666
西安市光華路
";tixmldocument* mydocument = new tixmldocument();
mydocument->parse(xmlstring.c_str());
使用parse函式就可以解析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篇
我要提問 我來說兩句 最近使用tinyxml進行c xml解析,感覺使用起來比較簡單,很容易上手,本文給出乙個使用tinyxml進行xml解析的簡單例子,很多複雜的應用都可以基於本例子的方法來完成。以後的文章裡會講解使用xerces進行c xml解析的例子,希望大家一起交流。tinyxml是乙個開源...
C XML解析之TinyXML篇
最近使用tinyxml進行c xml解析,感覺使用起來比較簡單,很容易上手,本文給出乙個使用tinyxml進行xml解析的簡單例子,很多複雜的應用都可以基於本例子的方法來完成。以後的文章裡會講解使用xerces進行c xml解析的例子,希望大家一起交流。tinyxml是乙個開源的解析xml的解析庫,...
C XML解析方式例項解析
c xml解析通過xpath的方式是如何辦到的呢?具體的操作步驟是什麼呢?那麼下面我們就向你介紹通過xpath的方式來實現c xml解析,希望對你了解c xml解析有所幫助。c xml解析通過xpath的方式的步驟 1 需要先載入文件,然後再讀取想要的節點值。xml文件 protected xmld...