使用TinyXml解析xml


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)

猜你喜欢

转载自blog.csdn.net/u013230291/article/details/79800941