C++ 使用TinyXML解析XML文件

您所在的位置:网站首页 vc读写xml文件 C++ 使用TinyXML解析XML文件

C++ 使用TinyXML解析XML文件

2024-01-18 06:20| 来源: 网络整理| 查看: 265

1.介绍

  读取和设置xml配置文件是最常用的操作,TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。  

  下载TinyXML的网址:http://www.grinninglizard.com/tinyxml/

  使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是:tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp。

 2.读取XML文件

 如读取文件a.xml:

Book store! book1 book2

读取代码如下:

1 #include "tinyxml.h" 2 #include 3 #include 4 5 using namespace std; 6 7 enum SuccessEnum {FAILURE, SUCCESS}; 8 9 SuccessEnum loadXML() 10 { 11 TiXmlDocument doc; 12 if(!doc.LoadFile("a.xml")) 13 { 14 cerr Value(); 29 const char* attr; 30 attr = elem->Attribute("priority"); 31 if(strcmp(attr,"1")==0) 32 { 33 TiXmlElement* e1 = elem->FirstChildElement("bold"); 34 TiXmlNode* e2=e1->FirstChild(); 35 coutFirstChild(); 41 cout Some text.

生成上面b.xmlL文件代码如下:

1 #include "tinyxml.h" 2 #include 3 #include 4 using namespace std; 5 6 enum SuccessEnum {FAILURE, SUCCESS}; 7 8 SuccessEnum saveXML() 9 { 10 TiXmlDocument doc; 11 12 TiXmlElement* root = new TiXmlElement("root"); 13 doc.LinkEndChild(root); 14 15 TiXmlElement* element1 = new TiXmlElement("Element1"); 16 root->LinkEndChild(element1); 17 18 element1->SetAttribute("attribute1", "some value"); 19 20 21 TiXmlElement* element2 = new TiXmlElement("Element2"); ///元素 22 root->LinkEndChild(element2); 23 24 element2->SetAttribute("attribute2", "2"); 25 element2->SetAttribute("attribute3", "3"); 26 27 28 TiXmlElement* element3 = new TiXmlElement("Element3"); 29 element2->LinkEndChild(element3); 30 31 element3->SetAttribute("attribute4", "4"); 32 33 TiXmlText* text = new TiXmlText("Some text."); ///文本 34 element2->LinkEndChild(text); 35 36 37 bool success = doc.SaveFile("b.xml"); 38 doc.Clear(); 39 40 if(success) 41 return SUCCESS; 42 else 43 return FAILURE; 44 } 45 46 int main(int argc, char* argv[]) 47 { 48 if(saveXML() == FAILURE) 49 return 1; 50 return 0; 51 } View Code

4.重要函数或类型的说明

  (1)FirstChildElement(const char* value=0):获取第一个值为value的子节点,value默认值为空,则返回第一个子节点。

  (2)NextSiblingElement( const char* _value=0 ) :获得下一个(兄弟)节点。

  (3)LinkEndChild(XMLHandle *handle):添加一个子节点。元素或者文本

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3