DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 體驗TinyXML讀寫XML文件數據
體驗TinyXML讀寫XML文件數據
編輯:XML詳解     

前一陣子做一個客服回復玩家問題工具,要用到讀寫XML文件的數據,同事推薦用TinyXML,於是,開始了我與TinyXML的親密之旅。

先簡單說說配置:首先下載TinyXML庫的文件,然後在 TinyXML 的目錄裡面找到tinystr.h, tinyxml.h,tinystr.cpp,tinyxml.cpp, tinyxmlerror.cpp,tinyxmlparser.cpp六個文件加入到自己的項目中去,在相應的工程文件中加入兩個頭文件 #include "tinyxml.h" ,#include "tinystr.h",在 tinystr.cpp,tinyxml.cpp, tinyxmlerror.cpp, tinyxmlparser.cpp四個文件的第一行加入頭文件 #include "stdafx.h",然後即可使用TinyXML編程。

要讀取的XML 數據如下:

  1. <?XML version="1.0" encoding="gb2312" standalone="yes" ?> 
  2. <root XMLns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
  3. <prop> 
  4. <id>100</id> 
  5. <title>test 1</title> 
  6. </prop> 
  7. <prop> 
  8. <id>200</id> 
  9. <title>test 2</title> 
  10. </prop> 
  11. </root> 

注意要將 encoding設為gb2312格式,我一開始設置的是utf-8,結果遇到在程序裡

寫入中文沒問題, 但在讀出該中文時卻有異常,把後面的 </ 符號也當作值讀出來

了,後來和一同事討論後才知道是編碼問題。

  1. string filefullPath = 要讀取XML文件的絕對路徑  
  2. //創建文件對象  
  3. TiXMLDocument * myDocument = new TiXMLDocument(filefullPath.c_str());  
  4. //加載文件數據  
  5. myDocument->LoadFile();  
  6. //獲取根節點  
  7. TiXMLElement *RootElement = myDocument->RootElement(); 

以下是簡單的讀取操作:

  1. //第一個子節點  
  2. TiXMLElement *CurrentPerson = RootElement->FirstChildElement();  
  3. //遍歷獲取指定節點數據  
  4. while(CurrentPerson)  
  5. {  
  6. //子節點第一個屬性 id  
  7. TiXMLElement *IdElement = CurrentPerson->FirstChildElement();  
  8. //第一個屬性的值  
  9. int nodeID = atoi(IdElement->FirstChild()->Value());  
  10. //子節點第二個屬性 title  
  11. TiXMLElement *TitleElement = IdElement->NextSiblingElement();  
  12. //第二個屬性的值  
  13. CString nodeTitle = TitleElement->FirstChild()->Value();  
  14. .....................  
  15. 如果還有後續節點,依次讀取  
  16. .....................  
  17. 維護讀出的數據  
  18. .....................  
  19. //指向下一節點  
  20. CurrentPersonCurrentPerson = CurrentPerson->NextSiblingElement();  

以下是增加XML記錄的操作,例如要增加 id 為 300,title 為 test3 的記錄:

  1. //創建節點對象  
  2. TiXMLElement *PersonElement = new TiXMLElement("prop");  
  3. //鏈接到根節點  
  4. RootElement ->LinkEndChild(PersonElement);  
  5. //創建節點對象的屬性節點  
  6. TiXMLElement *IdElement = new TiXMLElement("id");  
  7. TiXMLElement *TitleElement =new TiXMLElement("title");  
  8. //將屬性節點鏈接到子節點  
  9. PersonElement->LinkEndChild(IdElement);  
  10. PersonElement->LinkEndChild(TitleElement);  
  11. //創建屬性對應數值對象  
  12. TiXMLText *idContent = new TiXMLText("300");  
  13. TiXMLText *titleContent = new TiXMLText("test3");  
  14. //將數值對象關聯到屬性節點  
  15. IdElement->LinkEndChild(idContent);  
  16. TitleElement->LinkEndChild(titleContent);  
  17. //保存到文件  
  18. myDocument->SaveFile(m_filefullPath.c_str()); 

以下是刪除記錄操作,例如要刪除id為300 的記錄:

  1. //獲取當前要刪除的節點  
  2. TiXMLElement * childElement = 根據id從自己讀取時緩存的數據中獲得  
  3. //從根節點移除子節點  
  4. RootElement->RemoveChild(childElement);  
  5. //保存文件  
  6. myDocument->SaveFile(m_filefullPath.c_str()); 

學習TinyXML主要是要理解其節點的層次關系,通曉其筋脈,則運用自如。

原文鏈接:http://www.cnblogs.com/skydesign/archive/2011/11/08/2240528.Html

【編輯推薦】

  1. XML之父解讀未來互聯網"游戲化"的三個真谛
  2. AJax和Web服務數據格式:XML SOAP Html
  3. 超強解析XML——簡單直接的來
  4. 解析PHP中的XML數據
  5. 大話Html DOM與XML DOM的區別與聯系
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved