純C++ 讀取XML(使用tinyxml函式庫)

純C++ 讀取XML(使用tinyxml函式庫)

C++ 讀取XML(使用tinyxml函式庫)


 

資料來源: http://www.grinninglizard.com/tinyxml/

 

test_jash.xml

<Persons>

<Person ID=”1“>

  <name>jash</name>

  <age>20</age>

  </Person>

<Person ID=”2“>

  <name>jash.liao</name>

  <age>18</age>

  </Person>

  </Persons>

 

C++程式碼

#include <iostream>

#include “tinyxml.h”

#include “tinystr.h”

using namespace std;

void printNode(TiXmlNode* node);

int main()

{

   
cout << “Hello world!” << endl;

  TiXmlDocument
doc(“test_jash.xml”);

  doc.LoadFile();

  TiXmlNode
*root = doc.RootElement();

  printNode(root);

   
return 0;

}

void printNode(TiXmlNode* node) //迴圈列印所有的節點

{

  if(node
== NULL) return;

     cout<<“[“<<node->Value()<<“]”<<endl;
//
顯示節點的名稱

  TiXmlElement*
element = node->ToElement();

 

  if(element
&& element->GetText()) //
顯示節點的內容

             cout<<”      –>”<<
element->GetText()<<endl;

 

  if(element
&& element->FirstAttribute()) //
顯示節點屬性

  {

     TiXmlAttribute
*IDAttribute = element->FirstAttribute();

     while
( IDAttribute )

     {

       cout<<”      –>”<<“Attribute
name=”<<IDAttribute->Name()<<“\t”;

       cout<<”       ::”<<
IDAttribute->Value() << endl;

       IDAttribute=IDAttribute->Next();

     }

  }

 

  TiXmlElement*
child = node->FirstChildElement();

  while(child!=NULL)

  {

     printNode(child);
//
遞迴調用顯示節點

     child
= child->NextSiblingElement();

  }

}

 


 


發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *