久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

[轉]有關TinyXML使用的簡單總結

 崗西老蔡 2012-07-13

[轉]有關TinyXML使用的簡單總結

最近使用TinyXML進行C++ XML解析,,感覺使用起來比較簡單,很容易上手,,本文給出一個使用TinyXML進行XML解析的簡單例子,,很多復雜的應用都可以基于本例子的方法來完成,。以后的文章里會講解使用Xerces進行C++ XML解析的例子,希望大家一起交流,。
TinyXML是一個開源的解析XML的解析庫,,能夠用于C++,能夠在Windows或Linux中編譯,。這個解析庫的模型通過解析XML文件,,然后在內(nèi)存中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹,。

    DOM模型即文檔對象模型,,是將整個文檔分成多個元素(如書、章,、節(jié),、段等),并利用樹型結構表示這些元素之間的順序關系以及嵌套包含關系,。
    首先從網(wǎng)上下載TinyXML的庫,,文件夾的名字是TinyXpath,在工程里做如下配置:
    在附加包含路徑里添加:你的tinyxpath路徑/tinyxpath/include
    在附加庫路徑里添加:你的tinyxpath路徑/tinyxpath/lib
    在對象/庫路徑里添加:tinyxpathd.lib,,如果使用release版本,,則是tinyxpath.lib。
    另外,,由于我開發(fā)的項目是多線程的,,所以設置了多線程的環(huán)境,因此使用TinyXML沒有出現(xiàn)問題,。本人將TinyXML寫在一個單獨的C++工程進行測試,,發(fā)現(xiàn)如果不設置多線程的環(huán)境,會出現(xiàn)鏈接錯誤,。我覺得原因可能是TinyXML使用了多線程環(huán)境,,因此需要設置
多線程的環(huán)境。在工程/設置下的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();  //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
sex : 男
age : 22
phone : 88208888
address : 88208888
name : 李四
studentNo : 13031002
sex : 男
age : 20
phone : 88206666
address : 88206666

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

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的一些操作

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多