1.创建1.xml
#include <iostream>
#include "tinyxml2.h"
using namespace std;
using namespace tinyxml2;
int main(int argc, char* argv[])
{
XMLDocument doc;
// 创建根元素<China>
XMLElement* root = doc.NewElement("China");
doc.InsertEndChild(root);
// 创建子元素<City>
XMLElement* cityElement = doc.NewElement("City");
cityElement->SetAttribute("name", "WuHan"); // 设置元素属性
root->InsertEndChild(cityElement);
// 创建孙元素<population>
XMLElement* populationElement = doc.NewElement("population");
populationElement->SetText("8,000,000"); // 设置元素文本
cityElement->InsertEndChild(populationElement);
// 创建孙元素<area>
XMLElement* areaElement = doc.NewElement("area");
XMLText* areaText = doc.NewText("10000");
areaElement->InsertEndChild(areaText); // 设置元素文本
cityElement->InsertEndChild(areaElement);
// 输出XML至文件
cout << "output xml to '1.xml'" << endl << endl;
doc.SaveFile("1.xml");
// 输出XML至内存
cout << "output xml to memory" << endl
<< "--------------------" << endl;
XMLPrinter printer;
doc.Print(&printer);
cout << printer.CStr();
system("pause");
return 0;
}
2.解析1.xml
2.1tiny.cpp
#include <iostream>
#include"tinyxml2.h"
using namespace std;
using namespace tinyxml2;
void example2()
{
XMLDocument doc;
doc.LoadFile("1.xml");
XMLElement *scene = doc.RootElement();
XMLElement *surface = scene->FirstChildElement("node");
while (surface)
{
XMLElement *surfaceChild = surface->FirstChildElement();
const char* content;
const XMLAttribute *attributeOfSurface = surface->FirstAttribute();
cout << attributeOfSurface->Name() << ":" << attributeOfSurface->Value() << endl;
while (surfaceChild)
{
content = surfaceChild->GetText();
surfaceChild = surfaceChild->NextSiblingElement();
cout << content << endl;
}
surface = surface->NextSiblingElement();
}
}
int main()
{
example2();
system("pause");
return 0;
}
2.2 1.xml
<?xml version="1.0"?>
<scene name="Depth">
<node type="camera">
<eye>0 10 10</eye>
<front>0 0 -1</front>
<refUp>0 1 0</refUp>
<fov>90</fov>
</node>
<node type="Sphere">
<center>0 10 -10</center>
<radius>10</radius>
</node>
<node type="Plane">
<direction>0 10 -10</direction>
<distance>10</distance>
</node>
</scene>