欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
TinyXml快速入門(mén)(一)

作者:朱金燦
來(lái)源:http://blog.csdn.net/clever101


      對于xml文件,目前我的工作只是集中在配置文件和作為簡(jiǎn)單的信息文件來(lái)用,因此我不太喜歡使用msxml這種重量級的xml解析器,特別是使用msxml解析xml涉及到復雜的com類(lèi)型轉換,更是令人感覺(jué)繁瑣。因此對于簡(jiǎn)單的xml文件的解析,我更愿意使用開(kāi)源的TinyXml。


      首先介紹一下TinyXml吧。TinyXML是目前非常流行的一款基于DOM模型的XML解析器,簡(jiǎn)單易用且小巧玲瓏,非常適合存儲簡(jiǎn)單數據,配置文件,對象序列化等數據量不是很大的操作,其主頁(yè)是:http://www.grinninglizard.com/tinyxml/,目前最新版本是2.5.3 版本。

TinyXml網(wǎng)上的教程很多,但是我覺(jué)得寫(xiě)得都不怎樣(感覺(jué)就是看完之后就沒(méi)學(xué)會(huì ))。沒(méi)辦法,只得自己整理一篇適合自己的,至于適不適合別人,就見(jiàn)仁見(jiàn)智了。我感覺(jué)xml文件本質(zhì)就是小型的數據庫,換個(gè)角度來(lái)說(shuō)就是,你對數據庫有什么操作你對xml文件就應能實(shí)現什么操作。一般而言,對數據庫的操作包括以下幾種:新建數據庫、查詢(xún)數據庫、修改數據庫和刪除數據庫。那么對應xml文件就是新建xml文件、查詢(xún)xml文件的指定節點(diǎn)的值,修改xml文件中節點(diǎn)的值和刪除xml文件中節點(diǎn)的值。


       首先我們認識一下xml文件有哪幾種形式。下面我列出一些常用的xml文件的形式:


  1. example1.xml:  
  2. <?xml version="1.0" ?>  
  3. <Hello>World</Hello>  
  4. example2.xml:  
  5. <?xml version="1.0" ?>  
  6. <poetry>  
  7.        <verse>  
  8.                Alas  
  9.                  Great World  
  10.                        Alas (again)  
  11.        </verse>  
  12. </poetry>  
  13. example3.xml:  
  14. <?xml version="1.0" ?>  
  15. <shapes>  
  16.        <circle name="int-based" x="20" y="30" r="50" />  
  17.        <point name="float-based" x="3.5" y="52.1" />  
  18. </shapes>  
  19. example4.xml:  
  20. <?xml version="1.0" ?>  
  21. <MyApp>  
  22.     <Messages>  
  23.         <Welcome>Welcome to MyApp</Welcome>  
  24.         <Farewell>Thank you for using MyApp</Farewell>  
  25.     </Messages>  
  26.     <Windows>  
  27.         <Window name="MainFrame" x="5" y="15" w="400" h="250" />  
  28.     </Windows>  
  29.     <Connection ip="192.168.0.1" timeout="123.456000" />  
  30. </MyApp>  


      上面的例子摘自《TinyXML Tutorial 中文指南》。上面有四個(gè)例子,你看到了xml文件的幾種表現形式?我看到了本質(zhì)來(lái)說(shuō)不過(guò)是兩種表現形式:屬性值值在尖括號內,如<Window name="MainFrame" x="5" y="15" w="400" h="250" />和文本在尖括號外,如<Welcome>Welcome to MyApp</Welcome>,具體如下圖:



    鑒于example4.xml比較復雜,下面我將以此為例介紹tinyxml的使用。


     Tinyxml使用了兩種編譯選擇:使用標準C的char *類(lèi)型或者使用STL中的std::string,其中使用預處理器TIXML_USE_STL進(jìn)行控制,即添加了TIXML_USE_STL為使用std::string的。鑒于STL的廣泛使用以及其強大功能,下面我以使用std::string的tinyxml說(shuō)明。

首先使用VS 2005打開(kāi)tinyxmlSTL.dsp的工程文件,將其編譯成一個(gè)靜態(tài)庫,debug版本為:tinyxmld_STL.lib,然后開(kāi)始測試tinyxml庫。我的測試計劃是這樣的:首先使用tinyxml庫創(chuàng )建example4.xml,然后將其讀出來(lái),然后查詢(xún)指定節點(diǎn)的屬性或文本,再修改example4.xml(修改其中的一些節點(diǎn)值和刪除其中一個(gè)節點(diǎn),增加一個(gè)節點(diǎn)),然后再讀出來(lái)以判斷是否修改成功。具體是在VS 2005上新建一個(gè)控制臺工程:Test,注意使用多字節字符集進(jìn)行編譯,同時(shí)添加。首先是創(chuàng )建xml文件的代碼:


    

  1. /*! 
  2. *  /brief 創(chuàng )建xml文件。 
  3. *  /param XmlFile xml文件全路徑。 
  4. *  /return 是否成功。true為成功,false表示失敗。 
  5. */  
  6. bool CreateXml(std::string XmlFile)  
  7. {  
  8.     // 定義一個(gè)TiXmlDocument類(lèi)指針  
  9.     TiXmlDocument *pDoc = new TiXmlDocument;  
  10.     if (NULL==pDoc)  
  11.     {  
  12.         return false;  
  13.     }  
  14.     TiXmlDeclaration *pDeclaration = new TiXmlDeclaration(_T("1.0"),_T(""),_T(""));  
  15.     if (NULL==pDeclaration)  
  16.     {  
  17.         return false;  
  18.     }  
  19.     pDoc->LinkEndChild(pDeclaration);  
  20.     // 生成一個(gè)根節點(diǎn):MyApp  
  21.     TiXmlElement *pRootEle = new TiXmlElement(_T("MyApp"));  
  22.     if (NULL==pRootEle)  
  23.     {  
  24.         return false;  
  25.     }  
  26.     pDoc->LinkEndChild(pRootEle);  
  27.     // 生成子節點(diǎn):Messages  
  28.     TiXmlElement *pMsg = new TiXmlElement(_T("Messages"));  
  29.     if (NULL==pMsg)  
  30.     {  
  31.         return false;  
  32.     }  
  33.     pRootEle->LinkEndChild(pMsg);  
  34.     // 生成子節點(diǎn):Welcome  
  35.     TiXmlElement *pWelcome = new TiXmlElement(_T("Welcome"));  
  36.     if (NULL==pWelcome)  
  37.     {  
  38.         return false;  
  39.     }  
  40.     pMsg->LinkEndChild(pWelcome);  
  41.     // 設置Welcome節點(diǎn)的值  
  42.     std::string strValue = _T("Welcome to MyApp");  
  43.     TiXmlText *pWelcomeValue = new TiXmlText(strValue);  
  44.     pWelcome->LinkEndChild(pWelcomeValue);  
  45.     // 生成子節點(diǎn):Farewell  
  46.     TiXmlElement *pFarewell = new TiXmlElement(_T("Farewell"));  
  47.     if (NULL==pFarewell)  
  48.     {  
  49.         return false;  
  50.     }  
  51.     pMsg->LinkEndChild(pFarewell);  
  52.     // 設置Farewell節點(diǎn)的值  
  53.     strValue = _T("Thank you for using MyApp");  
  54.     TiXmlText *pFarewellValue = new TiXmlText(strValue);  
  55.     pFarewell->LinkEndChild(pFarewellValue);  
  56.     // 生成子節點(diǎn):Windows  
  57.     TiXmlElement *pWindows = new TiXmlElement(_T("Windows"));  
  58.     if (NULL==pWindows)  
  59.     {  
  60.         return false;  
  61.     }  
  62.     pRootEle->LinkEndChild(pWindows);  
  63.     // 生成子節點(diǎn):Window  
  64.     TiXmlElement *pWindow = new TiXmlElement(_T("Window"));  
  65.     if (NULL==pWindow)  
  66.     {  
  67.         return false;  
  68.     }  
  69.     pWindows->LinkEndChild(pWindow);  
  70.     // 設置節點(diǎn)Window的值  
  71.     pWindow->SetAttribute(_T("name"),_T("MainFrame"));  
  72.     pWindow->SetAttribute(_T("x"),_T("5"));  
  73.     pWindow->SetAttribute(_T("y"),_T("15"));  
  74.     pWindow->SetAttribute(_T("w"),_T("400"));  
  75.     pWindow->SetAttribute(_T("h"),_T("250"));  
  76.     // 生成子節點(diǎn):Window  
  77.     TiXmlElement *pConnection  = new TiXmlElement(_T("Connection"));  
  78.     if (NULL==pConnection)  
  79.     {  
  80.         return false;  
  81.     }  
  82.     pRootEle->LinkEndChild(pConnection);  
  83.     // 設置節點(diǎn)Connection的值  
  84.     pConnection->SetAttribute(_T("ip"),_T("192.168.0.1"));  
  85.     pConnection->SetAttribute(_T("timeout"),_T("123.456000"));  
  86.     pDoc->SaveFile(XmlFile);  
  87.     return true;  
  88. }   



       不知你注意到上面的規律沒(méi)有?首先父節點(diǎn)連接字節點(diǎn)使用函數LinkEndChild,使用方法是:pParentNode-> LinkEndChild(pChild);其次設置類(lèi)似這種結構<Window name="MainFrame" x="5" y="15" w="400" h="250" />采用SetAttribute函數,這個(gè)函數有兩個(gè)參數,前一個(gè)參數表示鍵,后一個(gè)參數表示鍵值,設置<Farewell>Thank you for using MyApp</Farewell>這種結構采用TiXmlText類(lèi),使用LinkEndChild函數進(jìn)行連結。


      上面是創(chuàng )建xml文件的代碼,下面介紹讀取xml文件的代碼。打印整個(gè)xml文件的代碼很簡(jiǎn)單,代碼如下:


  1. /*! 
  2. *  /brief 打印xml文件。 
  3. *  /param XmlFile xml文件全路徑。 
  4. *  /return 是否成功。true為成功,false表示失敗。 
  5. */  
  6. bool PaintXml(std::string XmlFile)  
  7. {  
  8.     // 定義一個(gè)TiXmlDocument類(lèi)指針  
  9.     TiXmlDocument *pDoc = new TiXmlDocument();  
  10.     if (NULL==pDoc)  
  11.     {  
  12.         return false;  
  13.     }  
  14.     pDoc->LoadFile(XmlFile);  
  15.     pDoc->Print();  
  16.     return true;  
  17. }  



   下次介紹使用tinyxml庫對xml文件進(jìn)行查詢(xún)指定節點(diǎn)、刪除指定節點(diǎn)、修改指定節點(diǎn)和增加節點(diǎn)的用法。

參考文獻:


1.《TinyXML入門(mén)教程


2. 《tinyxml 使用筆記與總結


3. 《TinyXML Tutorial 中文指南

















本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
TinyXml查找唯一節點(diǎn)及修改節點(diǎn)操作
【玩轉cocos2d-x之三十二】xml的解析
TiXml使用詳解
tinyxml入門(mén)教程1
有關(guān)TinyXML使用的簡(jiǎn)單總結
TinyXML(解析XML,支持c++ )
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久