我想使用tinyxml生成如下xml:
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Man ver="3.0">
<Hobby Day="forever">编程</Hobby>
</Man>
----------------------------------------------------------------------------
代码如下:
// Tinyxml_Test.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <string> using std::string; // tinyxml #include "./lib/tinyxml/tinyxml.h" #pragma comment(lib,"./lib/tinyxml/tinyxml.lib") #pragma comment(linker,"/NODEFAULTLIB:libc.lib") // 禁用默认库libc.lib,不然编译会出错 int _tmain(int argc,_TCHAR* argv[]) { TiXmlDocument doc; // 代表整个XML // 生成 <?xml version="1.0" encoding="GB2312" standalone="yes" ?> // 这个相当于XML的头了 TiXmlDeclaration* pxmlDecl = new TiXmlDeclaration("1.0","GB2312","yes"); if (pxmlDecl == NULL) { return 0; } doc.LinkEndChild(pxmlDecl); // 生成XML根节点Man TiXmlElement* pXmlRootElement = new TiXmlElement("Man"); if (pXmlRootElement != NULL) { pXmlRootElement->SetAttribute("ver","3.0"); // 根节点属性 doc.LinkEndChild(pXmlRootElement); // 根节点放入XML文档 } // 根节点的第一个子节点 TiXmlElement *pXmlElementChild = new TiXmlElement("Hobby"); if (pXmlElementChild != NULL && pXmlRootElement != NULL) { pXmlRootElement->LinkEndChild(pXmlElementChild); } // 设置子节点文本和属性 TiXmlText *pXmlCmdText = new TiXmlText("编程"); if (pXmlCmdText != NULL && pXmlElementChild != NULL) { pXmlElementChild->LinkEndChild(pXmlCmdText); pXmlElementChild->SetAttribute("Day","forever"); } // 打印整个XML TiXmlPrinter printer; doc.Accept(&printer); printf("生成的xml:\n\n%s",printer.CStr()); // 输出子节点属性 if (pXmlElementChild != NULL) { const char *pDayValue= pXmlElementChild->Attribute("Day"); printf("\nDay=%s \n",pDayValue); printf("子节点内容:%s",pXmlElementChild->GetText()); } getchar(); return 0; }
---------------------------------------------------------------------
效果截图:
--------------------------------
例子工程下载: