XML解析器(TinyXML)的使用指南(转) XML解析器(TinyXML)的使用指南 作者:thelONE 来源 www.sqlite.com.cn 最近软件体系结构课的一个大作业挺难的,要做很多的东西,比如网络连接,视频播放,XML等工作. 这里我给大家提供一个关于XML文件的解析方法的引导, 大家可以去试试这个工具(TinyXML) 1.首先下载TinyXML库的文件,这里给出链接,大家自己去下吧,记着要上国际 http://prdownloads.sourceforge.net/tinyxml/tinyxml_2_3_4.zip?download 2.下载后解压这个压缩包,把所有的东西放到一个找的着的地方(比如,E:开发库TinyXML) 3.用Visual C++(推荐VC++.NET2003)创建一个新的工程(Win32控制台) 4.在TinyXML的目录里面找到tinystr.h, tinyxml.h, tinystr.cpp, tinyxml.cpp, tinyxmlerror.cpp, tinyxmlparser.cpp六个文件加入到刚刚创建的项目中去 5.打开tinyxml.h, 在第一行加入下面这行: #define TIXML_USE_STL 6.然后创建一个cpp文件,输入下面的内容: 1. #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> ”; cout << ” Position = (” << px << “, ” << py << “, ” << pz << “) ”; cout << ” Dimension = (” << dx << “, ” << dy << “, ” << dz << “) ”; } } delete doc; getchar(); return 0; } 7.然后在项目的文件夹中加入一个xml文件,如下: <?xml version=”1.0″ encoding=”utf-8″ ?> <Scene> <staticbox mesh=”crate.mesh”> <position x=”-8″ y=”2″ z=”4″ /> <dimension x=”2″ y=”4″ z=”2″ /> </staticbox> <staticbox mesh=”crate.mesh”> <position x=”3″ y=”2″ z=”4″ /> <dimension x=”2″ y=”4″ z=”2″ /> </staticbox> </Scene> 8.编译运行
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/25087.html