#include <iostream> #include "tinyxml.h" #include "tinystr.h" #include <string> #include <windows.h> #include <atlstr.h> using namespace std; CString GetAppPath() {//获取应用程序根目录 TCHAR modulePath[MAX_PATH]; GetModuleFileName(NULL, modulePath, MAX_PATH); CString strModulePath(modulePath); strModulePath = strModulePath.Left(strModulePath.ReverseFind(_T('//'))); return strModulePath; } bool CreateXmlFile(string& szFileName) {//创建xml文件,szFilePath为文件保存的路径,若创建成功返回true,否则false try { //创建一个XML的文档对象。 TiXmlDocument *myDocument = new TiXmlDocument(); //创建一个根元素并连接。 TiXmlElement *RootElement = new TiXmlElement("任务"); myDocument->LinkEndChild(RootElement); //创建一个<任务>元素并连接。 TiXmlElement *ErrandElement = new TiXmlElement("任务ID"); RootElement->LinkEndChild(ErrandElement); //设置Person元素的属性。 ErrandElement->SetAttribute("ID", "1"); //创建name元素、age元素并连接。 TiXmlElement *NameElement = new TiXmlElement("任务名"); TiXmlElement *DepictElement = new TiXmlElement("任务描述"); TiXmlElement *RequirementElement = new TiXmlElement("完成条件"); TiXmlElement *PercentageElement = new TiXmlElement("完成度"); ErrandElement->LinkEndChild(NameElement); ErrandElement->LinkEndChild(DepictElement); ErrandElement->LinkEndChild(RequirementElement); ErrandElement->LinkEndChild(PercentageElement); //设置name元素和age元素的内容并连接。 TiXmlText *NameContent = new TiXmlText("地狱火堡垒"); TiXmlText *DepictContent = new TiXmlText("在地狱火堡垒里有一个火焰系的骑士带了1条火龙,你必须杀掉他才能拯救你的人民"); TiXmlText *RequirementContent = new TiXmlText("杀死最终BOSS火焰系的骑士+1条火龙"); TiXmlText *PercentageContent = new TiXmlText("杀死最终BOSS 0/2"); NameElement->LinkEndChild(NameContent); DepictElement->LinkEndChild(DepictContent); RequirementElement->LinkEndChild(RequirementContent); PercentageElement->LinkEndChild(PercentageContent); //创建第二个Person元素并连接。 TiXmlElement *ErrandElement2 = new TiXmlElement("任务ID"); RootElement->LinkEndChild(ErrandElement2); //设置Person元素的属性。 ErrandElement2->SetAttribute("ID", "2"); //创建name元素、age元素并连接。 TiXmlElement *NameElement2 = new TiXmlElement("任务名"); TiXmlElement *DepictElement2 = new TiXmlElement("任务描述"); TiXmlElement *RequirementElement2 = new TiXmlElement("完成条件"); TiXmlElement *PercentageElement2 = new TiXmlElement("完成度"); ErrandElement2->LinkEndChild(NameElement2); ErrandElement2->LinkEndChild(DepictElement2); ErrandElement2->LinkEndChild(RequirementElement2); ErrandElement2->LinkEndChild(PercentageElement2); //设置name元素和age元素的内容并连接。 TiXmlText *NameContent2 = new TiXmlText("鲜血熔炉"); TiXmlText *DepictContent2 = new TiXmlText("在鲜血熔炉里有一个暗黑系的魔法师带了5个小弟,你必须杀掉他才能拯救你的人民"); TiXmlText *RequirementContent2 = new TiXmlText("杀死最终BOSS暗黑系魔法师"); TiXmlText *PercentageContent2 = new TiXmlText("杀死最终BOSS 0/1"); NameElement2->LinkEndChild(NameContent2); DepictElement2->LinkEndChild(DepictContent2); RequirementElement2->LinkEndChild(RequirementContent2); PercentageElement2->LinkEndChild(PercentageContent2); CString appPath = GetAppPath(); string seperator = "//"; string fullPath = appPath.GetBuffer(0) +seperator+szFileName; myDocument->SaveFile(fullPath.c_str());//保存到文件 } catch (string& e) { return false; } return true; } bool ReadXmlFile(string& szFileName) {//读取Xml文件,并遍历 try { CString appPath = GetAppPath(); string seperator = "//"; string fullPath = appPath.GetBuffer(0) +seperator+szFileName; //创建一个XML的文档对象。 TiXmlDocument *myDocument = new TiXmlDocument(fullPath.c_str()); myDocument->LoadFile(); //获得根元素,即Persons。 TiXmlElement *RootElement = myDocument->RootElement(); //输出根元素名称,即输出Persons。 cout << RootElement->Value() << endl; //获得第一个Person节点。 TiXmlElement *FirstPerson = RootElement->FirstChildElement(); //获得第一个Person的name节点和age节点和ID属性。 TiXmlElement *NameElement = FirstPerson->FirstChildElement(); TiXmlElement *DepictElement = NameElement->NextSiblingElement(); TiXmlElement *RequirementElement = DepictElement->NextSiblingElement(); TiXmlElement *PercentageElement = RequirementElement->NextSiblingElement(); TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute(); //输出第一个Person的name内容,即周星星;age内容,即;ID属性,即。 cout << NameElement->FirstChild()->Value() << endl; cout << DepictElement->FirstChild()->Value() << endl; cout << RequirementElement->FirstChild()->Value() << endl; cout << PercentageElement->FirstChild()->Value() << endl; cout << IDAttribute->Value()<< endl; //获得第二个Person节点。 TiXmlElement *FirstPerson2 = FirstPerson->NextSiblingElement(); //获得第二个Person的name节点和age节点和ID属性。 TiXmlElement *NameElement2 = FirstPerson2->FirstChildElement(); TiXmlElement *DepictElement2 = NameElement->NextSiblingElement(); TiXmlElement *RequirementElement2 = DepictElement->NextSiblingElement(); TiXmlElement *PercentageElement2 = RequirementElement->NextSiblingElement(); TiXmlAttribute *IDAttribute2 = FirstPerson2->LastAttribute(); //输出第二个Person的name内容,即周星星;age内容,即;ID属性,即。 cout << NameElement2->FirstChild()->Value() << endl; cout << DepictElement2->FirstChild()->Value() << endl; cout << RequirementElement2->FirstChild()->Value() << endl; cout << PercentageElement2->FirstChild()->Value() << endl; cout << IDAttribute2->Value()<< endl; } catch (string& e) { return false; } return true; } int main() { string fileName = "info.xml"; CreateXmlFile(fileName); ReadXmlFile(fileName); }

TinyXML研究心得相关推荐

  1. Python字符串的encode与decode研究心得乱码问题解决方法

    Python字符串的encode与decode研究心得乱码问题解决方法 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成"\xe4\xb8\xad\xe6\x96 ...

  2. 杭州SEO大熊:百度分享插件的SEO研究心得

    杭州SEO大熊:百度分享插件的SEO研究心得 百度分享插件对seo网站优化有影响吗? 至少目前看来基本没有什么影响,不过百度既然推出它并且 显示在搜索结果页面里以大拇指图标推荐形式呈现给大家必然不是一 ...

  3. IDUdpServer研究心得

    IDUdpServer研究心得 Indy10中的控件IDUdpServer使用方便,比之Indy9有较大的改动,不过使用的时候一定要先弄清楚它的基本工作流程哦,不然会带来很大的麻烦,一下是本人经过查看 ...

  4. 研究心得:调研文献“快而全“的三步

    前言 本人研究心得体会,仅做参考和讨论,本人为计算机工科方向,其他学科领域可能无法参考 调研文献一直是一件让人很头疼的事情,尤其是我们刚接触一个陌生的领域的时候,我们对其知之甚少,而恰好组里又没有师兄 ...

  5. 深度学习之父Geoffrey Hinton:我的五十年深度学习生涯与研究心得

    来源:数据派THU & 机器学习初学者 作者:王菁 林亦霖 沈佳丽 程浩源 许菡如 胡燕君 贾川 编辑:AiCharm [AiCharm导读]Geoffrey Hinton被公认是人工智能的教 ...

  6. Minecraft TrMenu 菜单插件 研究心得

    目录 导读 链接 函数 材质参数化 全局变量操作 待更新- 导读 本文主要是对 TrMenu 插件部分用法解释 为了方便我个人查阅 啊哈哈哈 主要使用 TrMenu v3 版本作为演示 文章内容仅为个 ...

  7. ocos2d-x Win32下的节点缩放原理研究心得

    [2.1.0]Cocos2d-x Win32下的节点缩放原理研究心得 [复制链接]     火星熊猫 19 主题 2 听众 489 积分 版主 收听TA 发消息 电梯直达 楼主   发表于 2013- ...

  8. 图灵奖得主Geoffrey Hinton:我的五十年深度学习生涯与研究心得

    来源:数据派THU & 机器学习初学者 作者:王菁 林亦霖 沈佳丽 程浩源 许菡如 胡燕君 贾川 编辑:新智元 他从未正式上过计算机课程,本科在剑桥大学读的是生理学和物理学,期间曾转向哲学,但 ...

  9. CQR_Encode 二维码研究心得

    最新因为工作需要,研究了一下二维码,QRCode,在这里记录下心得.第一次写博客,加上水平不高,如果有写的不好的地方,还请指教. 主要是基于 Psytec Inc. ,一个日本的公司开发的一款 QR_ ...

最新文章

  1. 获取汉字的首字母(转)
  2. Xilinx中时钟资源:模式时钟管理器(MMCM)的使用
  3. strrchr 字符查找函数
  4. 使用区分优先级的负载分流法确保Netflix的可靠性
  5. 大学c语言程序设计实训课实验报告,大学一年级下学期C语言程序设计实验报告答案 完整版...
  6. 《零基础》MySQL UNION 操作符(十七)
  7. 听说有了华为分布式技术,开发者能够一人顶三人?
  8. 在Linux系统中安装caffe
  9. java中的集合和数组
  10. JDBC02 加载JDBC驱动 建立连接
  11. python函数参数用法_Python:函数参数类型及其用法
  12. 锐捷交换机配置snmp版本_原创整理:锐捷S3550系列交换机基本配置命令(一)
  13. NAudio:MP3转WAV和Wav转Mp3
  14. react 面试 笔记
  15. GDC API下载肿瘤数据
  16. 【原创开源应用第2期】基于RL-USB和RL-FlashFS的完整NAND解决方案,稳定好用,可放心用于产品批量
  17. WPS文档设置空格下划线
  18. libusb介绍及简单使用
  19. Shell之function函数的定义及调用
  20. 国产系统UOS上的可视化大屏电子看板系统

热门文章

  1. 初学编程两年多学习的总结!
  2. python写一个爬虫(3)
  3. 计算共形几何是计算机科学和,科学网—计算共形几何概览 - 顾险峰的博文
  4. 基于FPGA的实现一款简易电子密码锁
  5. 前端面试——浏览器兼容问题
  6. 少说话多写代码之Python学习032——循环语句02(如何迭代-排序和反转)
  7. 微信小程序页面停留时间统计
  8. FastDFS(分布式文件系统)使用介绍
  9. 走进Linux的世界,看这篇文章就够了
  10. 徐志摩最美的6句话,刻骨铭心!