xml格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<params>
<result>
<data>
<dataUuid>id</dataUuid>
<dataName>NAME</dataName>
<dataBound>SHP</dataBound>
</data>
<data>
<dataUuid>数据id</dataUuid>
<dataName>数据名</dataName>
<dataBound>数据边框</dataBound>
</data>
<data>
<dataUuid>数据id</dataUuid>
<dataName>数据名</dataName>
<dataBound>数据边框</dataBound>
</data>
<data>
<dataUuid><![CDATA[80522c3c-083b-4a0d-af23-956a8ca6af84]]></dataUuid>
<dataName><![CDATA[E119D4_N28D3_20170429_ZY302_MUX_DOM]]></dataName>
<dataBound><![CDATA[POLYGON((119.193 28.5701,119.7238 28.4729,119.6136 28.0084,119.0852 28.1055))]]></dataBound>
</data>
</result>
<target>
<targetBound><![CDATA[POLYGON((119.193 28.5701,119.7238 28.4729,119.6136 28.0084,119.0852 28.1055))]]></targetBound>
</target>
</params>
解析代码如下:
int XmlExp(const char* xmlpath)
{
TiXmlDocument docXml;
TiXmlElement* element = NULL;
TiXmlAttribute *attr = NULL;
StruXmlInfo StruTemp;
if (docXml.LoadFile(xmlpath) == true)
{
element = docXml.RootElement();
TiXmlElement *ele_result = element->FirstChildElement();
TiXmlElement *element2 = ele_result->FirstChildElement();
while (element2)
{
TiXmlElement *element3 = element2->FirstChildElement();
for (int i = 0; i < 3; i++)
{
const char* pContent = element3->GetText();
if (i == 0)
{
StruTemp.id = pContent;
printf("%s\n", pContent);
}
if (i == 1)
{
StruTemp.name = pContent;
printf("%s\n", pContent);
}
if (i == 2)
{
StruTemp.range = pContent;
printf("%s\n", pContent);
}
element3 = element3->NextSiblingElement();
}
VecXmlInfo.push_back(StruTemp);
element2 = element2->NextSiblingElement();
printf("%s\n", element2->Value());
if (element2->GetText() == "target")
{
break;
}
}
/*while (element3)
{
const char* pContent = element3->GetText();
StruTemp.id = pContent;
printf("%s\n", pContent);
element3 = element3->NextSiblingElement();
}*/
}
return 0;
}
cmd显示:
备注:
element2->Value():获取标签名
element3->NextSiblingElement():获取下一个标签
element3->GetText():获取属性值
TinyXML库的下载地址(http://download.csdn.net/detail/u013230291/9920039)