- #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; } |