zoukankan      html  css  js  c++  java
  • VC++ TinyXML

       下载TinyXML库文件http://sourceforge.net/projects/tinyxml/

        在TinyXML的目录找到tinystr.h, tinyxml.h,tinystr.cpp,tinyxml.cpp, tinyxmlerror.cpp,tinyxmlparser.cpp六个文件加入到自己的项目中去,在相应的工程文件中加入两个头文件 #include "tinyxml.h"   ,#include "tinystr.h",在 tinystr.cpp,tinyxml.cpp, tinyxmlerror.cpp, tinyxmlparser.cpp四个文件的第一行加入头文件 #include "stdafx.h",然后即可使用TinyXML编程。     

    =======================================================

            要读取的xml 数据如下:

            <?xml version="1.0" encoding="gb2312" standalone="yes" ?>

           <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

                   <prop>  

                           <id>100</id>

                           <title> test 1</title>

                   </prop>

                   <prop>  

                           <id>200</id>

                           <title> test 2</title>

                   </prop>

            </root>

          注意要将 encoding设为gb2312格式,我一开始设置的是utf-8,结果遇到在程序里

          写入中文没问题, 但在读出该中文时却有异常,把后面的 </ 符号也当作值读出来

          了,后来和一同事讨论后才知道是编码问题。

    =======================================================

          string   filefullPath = 要读取xml文件的绝对路径

          //创建文件对象

          TiXmlDocument *  myDocument = new TiXmlDocument(filefullPath.c_str());

          //加载文件数据     

           myDocument->LoadFile();    

        //获取根节点    

       TiXmlElement *RootElement = myDocument->RootElement();

    =======================================================

         以下是简单的读取操作:

        //第一个子节点     TiXmlElement *CurrentPerson = RootElement->FirstChildElement();   

            //遍历获取指定节点数据      while(CurrentPerson)     {

             //子节点第一个属性  id          TiXmlElement *IdElement = CurrentPerson->FirstChildElement();

             //第一个属性的值          int  nodeID = atoi(IdElement->FirstChild()->Value());

             //子节点第二个属性  title          TiXmlElement *TitleElement = IdElement->NextSiblingElement();

             //第二个属性的值          CString   nodeTitle = TitleElement->FirstChild()->Value();

             .....................

             如果还有后续属性,依次读取

             .....................

             维护读出的数据

             .....................

             //指向下一节点          CurrentPerson = CurrentPerson->NextSiblingElement();     } =======================================================

         以下是增加xml记录的操作,例如要增加 id 为 300,title 为 test3 的记录:

         //创建节点对象      TiXmlElement *PersonElement = new TiXmlElement("prop");

         //链接到根节点      RootElement ->LinkEndChild(PersonElement);

         //创建节点对象的属性节点      TiXmlElement *IdElement = new TiXmlElement("id");      TiXmlElement *TitleElement =new TiXmlElement("title");

         //将属性节点链接到子节点      PersonElement->LinkEndChild(IdElement);      PersonElement->LinkEndChild(TitleElement);

         //创建属性对应数值对象

         TiXmlText *idContent = new TiXmlText("300");

         TiXmlText *titleContent = new TiXmlText("test3");

         //将数值对象关联到属性节点      IdElement->LinkEndChild(idContent);      TitleElement->LinkEndChild(titleContent);

         //保存到文件      myDocument->SaveFile(m_filefullPath.c_str());

    =======================================================

         以下是删除记录操作,例如要删除id为300 的记录:

         //获取当前要删除的节点      TiXmlElement * childElement = 根据id从自己读取时缓存的数据中获得

         //从根节点移除子节点      RootElement->RemoveChild(childElement);

         //保存文件      myDocument->SaveFile(m_filefullPath.c_str());

    =======================================================

        

  • 相关阅读:
    shop--11.前端展示系统--店铺列表(后端)
    shop--11.前端展示系统--首页展示(前端)
    shop--11.前端展示系统--首页展示(后端)
    shop--10.商品--解除商品与某商品类别的关联的实现
    shop--10.商品--商品管理(前端)
    shop--10.商品--商品管理(后端)--dao层--Service层--Controller层
    shop--10.商品--商品编辑(前端)及调试注意
    shop--10.商品--商品编辑(后端)--Controller层
    shop--10.商品--商品编辑(后端)--Service层
    shop--10.商品--商品编辑(后端)--dao层
  • 原文地址:https://www.cnblogs.com/ike_li/p/3502159.html
Copyright © 2011-2022 走看看