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
读取代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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文件代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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):添加一个子节点。元素或者文本
|