CB使用TINYXML类库进行XML操作

来源:互联网 发布:handler 闹钟 源码 编辑:程序博客网 时间:2024/06/08 19:28

由于看到网上对C++下的xml类库中tinyxml的评价比较好,因此,在最近的一个项目里上手使用了一下,发现该类对XML操作的封装的确不错。

首先贴上要操作的XML内容

<root>
<result>1</result><resultmsg>当result节点为0时,该节点为错误消息,否则为空</resultmsg>
<filenum>2</filenum> 
<files>
<filename>Report\2015001011\2015001011-张三-11002.pdf</filename>
<filename>Report\2015001011\2015001011-张三-11003.pdf</filename>
</files>
</root>

然后,新建一个CB工程,将tinystr.h,tinystr.cpp,tinyxml.cpp,tinyxml.h以及tinyxmlparser.cpp文件添加到工程中,然后修改tinyxmlparser.cpp中的SetError函数,将其直接返回,否则链接的时候会提示无法链接上tinyxml.h中的errorinfo数组。


然后在工程的主界面CPP文件中,打开xml文件进行操作

void __fastcall TForm1::btn1Click(TObject *Sender)
{
    TiXmlDocument *myDocument = new TiXmlDocument("c:\\SB.xml");
    if(myDocument != NULL)
    {
        myDocument->LoadFile();
        TiXmlElement * RootEle = myDocument->RootElement();
        if(RootEle != NULL)
        {
            TiXmlElement * successnode = RootEle->FirstChildElement();
            if(successnode)
            {
                AnsiString sSuccess = successnode->GetText();
                TiXmlElement* eleErrorMsg = successnode->NextSiblingElement();
                if(sSuccess == "0")
                {
                    ShowMessage(eleErrorMsg->GetText());
                }
                else
                {
                    TiXmlElement* eleFileNum = eleErrorMsg->NextSiblingElement();
                    if(eleFileNum)
                    {
                        int nFileNum = StrToInt(eleFileNum->GetText());
                        TiXmlElement* eleFiles = eleFileNum->NextSiblingElement();
                        TiXmlElement* eleFile = eleFiles->FirstChildElement();
                        for(int i = 0; i < nFileNum; i++)
                        {
                            AnsiString sFilePath = sFilePath = eleFile->GetText();
                            eleFile = eleFile->NextSiblingElement();
                        }
                    }
                }
            }
        }
    }
    myDocument->Clear();
    delete myDocument;
}
//---------------------------------------------------------------------------

封装好的效果和C#中的XMLDOCUMENT类十分接近,使用起来很方便。

0 0
原创粉丝点击