tinyxml使用样板

#include "tinyxml2.h"

//创建一个XML
void CreateXml()
{
    //添加根元素root
    tinyxml2::XMLDocument* doc = new tinyxml2::XMLDocument();
    tinyxml2::XMLElement* root = doc->NewElement( "root" );
    doc->InsertFirstChild(root);
    
    //添加child元素element并设置属性
    tinyxml2::XMLElement* element = doc->NewElement( "element" );
    element->SetAttribute("key1", "abc");
    element->SetAttribute("key2", "123");
    element->SetAttribute("key3", "abc");
    root->InsertFirstChild(element);
    element = doc->NewElement( "element" );
    element->SetAttribute("key1", "efg");
    element->SetAttribute("key2", "456");
    element->SetAttribute("key3", "efg");
    root->LinkEndChild(element);
    element = doc->NewElement( "element" );
    element->SetAttribute("key1", "efg1");
    element->SetAttribute("key2", "4567");
    element->SetAttribute("key3", "efg1");
    root->LinkEndChild(element);
    
    //添加child元素text并设置text
    element = doc->NewElement( "text" );
    element->SetText("hello world");
    root->LinkEndChild(element);
    
    doc->Print();
    doc->SaveFile("test.xml");
    delete doc;
}

void ReadXml()
{
    tinyxml2::XMLDocument doc;
    doc.LoadFile("test.xml");
    if (0 != doc.ErrorID())
    {
        printf("[errorId=%d, file=%s]load xml file fail\n", doc.ErrorID(), "example.xml");
        return;
    }
    tinyxml2::XMLElement* elementRoot = doc.FirstChildElement("root");
    if (NULL == elementRoot)
    {
        printf("xml element elementRoot not exist\n");
        return;
    }
    tinyxml2::XMLElement* element = elementRoot->FirstChildElement("element");
    while( element !=  NULL)
    {
        const char* key1 = NULL;
        element->QueryStringAttribute("key1", &key1);    
        printf("key1:%s ", key1);
        int key2 = 0;
        element->QueryIntAttribute("key2", &key2);
        printf("key2:%d ", key2);    
        const char* key3 = 0;
        element->QueryStringAttribute("key3", &key3);
        printf("key3:%s\n", key3);    
        element = element->NextSiblingElement();
    }
    element = elementRoot->FirstChildElement("text");
    const char* str = element->GetText();
    printf("<text>%s</text>\n", str);
}

int main()
{
    CreateXml();
    ReadXml();
    return 0;
}

 

posted @ 2024-01-19 20:08  ho966  阅读(7)  评论(0编辑  收藏  举报