zoukankan      html  css  js  c++  java
  • tinyxml开源库的基本用法

    最近项目中的某个功能需要写xml,由于项目中已经引入了tinyxml,所以不再寻找其他开源库。

    前提:你得有个xml对象,声明tinyxml的对象:基于tinyxml的内存管理,TiXmlDocument  xmlDoc这样定义更简单;

    读:

    (1)载入xml:

      xmlDoc.LoadFile(filename, TIXML_ENCODING_UTF8);

     (2)读根节点:

      TiXmlElement* pRootEle = xmlDoc.RootElement();

     (3)获取节点:

      TiXmlElement* pCommEle = pRootEle->FirstChildElement(“test”);

     (4)获取节点的属性:

      pCommEle->Attribute(“mode”, &imode);

     (5)获取节点的值:

      pCommEle->FirstChild()->Value();

     

    写: 

    要写入xml,首先要弄清楚xml的各个元素在tinyxml的定义。

    TiXmlNode:节点;
    
    TiXmlComment:注释;
    
    TiXmlDeclaration:声明;
    
    TiXmlElement:元素;
    
    TiXmlText:文字 

    弄清楚概念后写入就简单了

    (1)首先写入声明:

    TiXmlDeclaration* pdecl = new TiXmlDeclaration("1.0", "utf-8", "");
    xmlDoc.LinkEndChild(pdecl);

    (2)写入节点:

    TiXmlElement* pESTimeEle = new TiXmlElement(“test”);
    pRootEle->LinkEndChild(pESTimeEle);

    这里需要说明下:如果写入的是根节点,写入后显示:<test></test>

    如果写入的是其他节点,写入后显示:<test />

    如果要写入后显示<test></test>,则需要写入空的节点文本,具体操作见(5)

    (3)写入注释:

    TiXmlComment* pModeComm = new TiXmlComment(“中文”);
    pRootEle->LinkEndChild(pModeComm);

    这里需要说明的是:如果要写入非英文字符,需要注意字符编码,因为声明中使用utf-8的编码,必须保持一致性。

    (4)写入节点文本:

    TiXmlText *pIpContent = new TiXmlText(“00”);
    pESTimeEle->LinkEndChild(pIpContent);

    (5)写入节点属性:

    pESTimeEle->SetAttribute(“mode”, 12);

    (6)写完后保存:

    xmlDoc.SaveFile(“test.xml”)

     PS: TiXmlDocument对象建议在栈上申请,其他对象在堆上申请,且不用手工释放,最后析构TiXmlDocument对象时会自动释放。

    其他的暂未使用,就不写出来误人子弟了。

    欢迎看官们拍砖,已备好头盔。

    尊重自己的内心,尊重别人的选择。
  • 相关阅读:
    poj 2728 Desert King(最小比率生成树,迭代法)
    HDU
    hud 2089 不要62 (数位dp)
    食物链(带全并查集)
    docNet基础学完感想
    zoj 1081 (改进的弧长算法)(转)
    zoj 1962 How Many Fibs?(字符串化为数字处理)
    zoj 1109 zoj 1109 Language of FatMouse(字典树)
    iOS开发网络数据之AFNetworking使用
    iOS 使用AFNetworking
  • 原文地址:https://www.cnblogs.com/superbi/p/4972048.html
Copyright © 2011-2022 走看看