最近项目上需要用到XML,然后简单的学习了一下XML,在此简单描述XML中的元素解析过程,学习例子来自于
http://blog.csdn.net/educast/article/details/12908455
去这里获取XML解析器的文件,我们只需要tinyxml2.h和tinyxml2.cpp,将他们拷到工程目录里面。
1.XML元素内容的获取
创建一个简单的xml文件
1 <?xml version="1.0"?> 2 <Hello> 3 World 4 </Hello>
然后编写程序获取xml元素内容。
1 #include <iostream> 2 #include <fstream> 3 #include "tinyxml2.h" 4 using namespace tinyxml2; 5 using namespace std; 6 7 void example1() 8 { 9 XMLDocument doc; 10 doc.LoadFile("test.xml"); 11 12 const char* content= doc.FirstChildElement( "Hello" )->GetText(); 13 cout << content <<endl; 14 } 15 16 int main() 17 { 18 example1(); 19 20 return 0; 21 }
注意:XML文件中不同的书写格式会输出不同的元素内容格式,比如如下所示:
2.复杂一点的例子
1 <?xml version="1.0"?> 2 <scene name="Depth"> 3 <node type="camera"> 4 <eye>0 10 10</eye> 5 <front>0 0 -1</front> 6 <refUp>0 1 0</refUp> 7 <fov>90</fov> 8 </node> 9 <node type="Sphere"> 10 <center>0 10 -10</center> 11 <radius>10</radius> 12 </node> 13 <node type="Plane"> 14 <direction>0 10 -10</direction> 15 <distance>10</distance> 16 </node> 17 </scene>
1 #include <iostream> 2 #include <fstream> 3 #include "tinyxml2.h" 4 using namespace tinyxml2; 5 using namespace std; 6 7 #include <iostream> 8 #include"tinyxml2.h" 9 using namespace std; 10 using namespace tinyxml2; 11 void example2() 12 { 13 XMLDocument doc; 14 doc.LoadFile("test.xml"); 15 XMLElement *scene=doc.RootElement(); 16 XMLElement *surface=scene->FirstChildElement("node"); 17 while (surface) 18 { 19 XMLElement *surfaceChild=surface->FirstChildElement(); 20 const char* content; 21 const XMLAttribute *attributeOfSurface = surface->FirstAttribute(); 22 cout<< attributeOfSurface->Name() << ":" << attributeOfSurface->Value() << endl; 23 while(surfaceChild) 24 { 25 content=surfaceChild->GetText(); 26 surfaceChild=surfaceChild->NextSiblingElement(); 27 cout<<content<<endl; 28 } 29 surface=surface->NextSiblingElement(); 30 } 31 } 32 int main() 33 { 34 example2(); 35 return 0; 36 }
时间: 2024-11-02 14:59:22