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也可以这样读取,时间有限就写个简略版啦!拜拜