c库之TiXmlElement读取XML配置文件的基本用法(适配所有)

TiXmlElement 是Tiny库中的一个类,用于表示XML文档中的元素(element)。TinyXML是一个用于解析和操作XML文件的轻量级C++库。

1.创建实例

        TiXmlDocument* myDocument = new TiXmlDocument();

 2.加载文件

        muDocument->LoadFile("config.xml");//它的返回值是一个bool值,用于判断是否配置文件加载成功;   

bool loadOkay = myDocument->LoadFile("config.xml");

    if (!loadOkay){

        printf("Capture:Could not load test file 'capconfig.xml'. Error='%s'. Exiting.\n", myDocument->ErrorDesc());

    }// ErrorDesc()是TiXmlDocument的一个返回string类型的错误信息;

3.读取配置文件

在tinyXML中,用FirstChild("名字")查找节点时,调用FirstChild函数的节点与要查找的节点必须成“父子关系”。比如一下是一个xml例子

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<server>

        <sdtp id="2">

                <sdtp_server ip="11.11.11.11" port="111"/>

                <version id="1"/>

        </sdtp>

        <config>

                <report ip="22.22.22.22"/>

                <value number="22"/>

        </config>

</server>

读取以上xml

//这是获得根元素,即server

TiXmlElement* pRoot = myDocument->RootElement();

//这是获得根元素下的子元素, 即sdtp

TiXmlElement* pElement = pRoot->FirstChildElement();

//获得第一个的sdtp节点和version节点和ID属性。

//这是获得sdtp id属性“2”

TiXmlAttribute *IDAttribute = pElement->FirstAttribute();

//这是判断是否第一个节点为sdtp

while (pElement)

                 {

                     pSubElement = pElement->FirstChildElement();

                     if (!strcmp(pElement->Value(), "server"))

                     {

                        //基本参数配置读取sdtp_server,version

                        if (0 == ConfigParameter(pSubElement))

                        {

                            printf("Config init lost\n");

                        }

                     }

                     pElement = pElement->NextSiblingElement();//跳到下一个同级节点(就是config的位置^-^)

                 }

//读取sdtp_server,version的属性值

ConfigParameter(TiXmlElement* pElement)

 while (pElement)

    {

        if (!strcmp(pElement->Value(), "sdtp_server"))

        {

            pElement->Attribute("port", &port);

            strcpy(strPath, pElement->Attribute("ip"));

        }

          if (!strcmp(pElement->Value(), "version"))

        {

             pElement->Attribute("id",&ip)

        }

     }

同理config也可以这样读取,时间有限就写个简略版啦!拜拜

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值