[轉]有關TinyXML使用的簡單總結最近使用TinyXML進行C++ XML解析,,感覺使用起來比較簡單,很容易上手,,本文給出一個使用TinyXML進行XML解析的簡單例子,,很多復雜的應用都可以基于本例子的方法來完成,。以后的文章里會講解使用Xerces進行C++ XML解析的例子,希望大家一起交流,。
TinyXML是一個開源的解析XML的解析庫,,能夠用于C++,能夠在Windows或Linux中編譯,。這個解析庫的模型通過解析XML文件,,然后在內(nèi)存中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹,。
DOM模型即文檔對象模型,,是將整個文檔分成多個元素(如書、章,、節(jié),、段等),并利用樹型結構表示這些元素之間的順序關系以及嵌套包含關系,。 <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(); //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; } 程序運行結果如下: string xmlString = "<Class name=\"計算機軟件班\">\ <Students>\ <student name=\"張三\" studentNo=\"13031001\" sex=\"男\(zhòng)" age=\"22\">\ <phone>88208888</phone>\ <address>西安市太白南路二號</address>\ </student>\ <student name=\"李四\" studentNo=\"13031002\" sex=\"男\(zhòng)" age=\"20\">\ <phone>88206666</phone>\ <address>西安市光華路</address>\ </student>\ </Students>\ </Class>"; TiXmlDocument* myDocument = new TiXmlDocument(); myDocument->Parse(xmlString.c_str()); 使用Parse函數(shù)就可以解析XML字符流了,,這是很多開發(fā)者不太熟悉的情況,。 如果開發(fā)者開發(fā)特定應用,就可以使用上述類似方法,,可能不需要完全處理每一個屬性,,比如可以對屬性名進行判斷,只處理自己需要的屬性,,或者自己需要的xml元素,。還可以使用TinyXML的方法創(chuàng)建xml元素和xml屬性,或者設置xml元素和屬性對應的值,,等等,,如果讀者想要類似的例子,可以留言寫出,。 下面介紹TinyXML的一些類,。在TinyXML中,根據(jù)XML的各種元素來定義了一些類: TiXmlBase:整個TinyXML模型的基類,。 TiXmlAttribute:對應于XML中的元素的屬性,。
TiXmlNode:對應于DOM結構中的節(jié)點。
TiXmlComment:對應于XML中的注釋
TiXmlDeclaration:對應于XML中的申明部分,,<,?versiong="1.0" ?>。
TiXmlDocument:對應于XML的整個文檔,。
TiXmlElement:對應于XML的元素,。
TiXmlText:對應于XML的文字部分
TiXmlUnknown:對應于XML的未知部分。 TiXmlHandler:定義了針對XML的一些操作 |
|