- #include <iostream>
#include <fstream> #include "tinyxml.h"
using namespace std;
int main() { string filename = "first.xml"; TiXmlDocument* doc = new TiXmlDocument(filename.c_str());
////////////////////////////////////////////////////////////////////////// // 在这里复制文件 ////////////////////////////////////////////////////////////////////////// std::ifstream ifs(filename.c_str()); char buffer[1024]; char c, *p = buffer; while(ifs.get(c)) { *p++=c; } *p = 0; ifs.close(); //////////////////////////////////////////////////////////////////////////
if(!doc->Parse(buffer)) { cout << doc->ErrorDesc() << endl; }
const TiXmlElement* root = doc->RootElement(); for( const TiXmlNode* child = root->FirstChild(); child; child=child->NextSibling()) { OutputDebugStringA(child->Value());
/* 生成一个StaticBox
<staticbox mesh="crate.mesh"> <position x="-8" y="2" z="4" /> <dimension x="2" y="4" z="2" /> </staticbox>
*/ if((child->Type() == TiXmlNode::ELEMENT) && (!strcmp(child->Value(),"staticbox"))) { const TiXmlElement *box = (const TiXmlElement*)child;
double px, py, pz; double dx, dy, dz;
std::string mesh; mesh = box->Attribute("mesh");
for(const TiXmlNode *sub_tag = box->FirstChild(); sub_tag; sub_tag = sub_tag->NextSibling() ) { if(sub_tag->Type() == TiXmlNode::ELEMENT) { const TiXmlElement *sub_element = (const TiXmlElement*)sub_tag;
if(!strcmp(sub_tag->Value(),"position")) { px = (sub_element->Attribute("x",&px))?px:0.0; py = (sub_element->Attribute("y",&py))?py:0.0; pz = (sub_element->Attribute("z",&pz))?pz:0.0; } else if(!strcmp(sub_tag->Value(),"dimension")) { dx = (sub_element->Attribute("x",&dx))?dx:1.0; dy = (sub_element->Attribute("y",&dy))?dy:1.0; dz = (sub_element->Attribute("z",&dz))?dz:1.0; } } }
cout << "<StaticBox>/n"; cout << "/tPosition = (" << px << ", " << py << ", " << pz << ")/n"; cout << "/tDimension = (" << dx << ", " << dy << ", " << dz << ")/n/n"; } }
delete doc;
getchar(); return 0; }
|