C++ tinyxml的封装与使用

1.tinyxml简介

TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器。
下载地址:https://sourceforge.net/projects/tinyxml/
我下载的是tinyxml_2_6_2.zip,解压出来如下图:

C++ tinyxml的封装与使用_第1张图片

将这里面的所有.h和.cpp复制到你的工程下就可以了,不需要链接库。

2.代码

2.1 需要解析的xml

  
<phonebook>  
      
    <item>  
        <name>xiaomingname>  
    <addr>chengduaddr>  
    <tel>15884470211tel>  
    <email>[email protected]email>  
    item>  
    <item>  
        <name>xiaohuaname>  
    <addr>beijingaddr>  
    <tel>15840330481tel>  
    <email>[email protected]email>  
    item>  
      
phonebook> 

2.2 myxml.h头文件

#ifndef _MYXML_H_
#define _MYXML_H_
#include "tinyxml/tinyxml.h"
#include 
#include 
using namespace std;
class ParserXml{
public:
    ParserXml(const string& filename);
    bool Parser();
private:
    TiXmlDocument doc;
};
#endif //_MYXML_H_

2.3 myxml.cpp实现文件

#include "myxml.h"

ParserXml::ParserXml(const string& filename){
    doc = filename.c_str();
}

bool ParserXml::Parser(){
    bool loadOkay = doc.LoadFile();
    if(!loadOkay){
        cout<<"load xml file error"<return false;
    }
    TiXmlElement* root = doc.RootElement();
    cout<<"-------contact person info-------"<for(TiXmlNode* item= root->FirstChild("item");item;
        item = item->NextSibling("item")){
            TiXmlNode* child = item->FirstChild();
            const char* name = child->ToElement()->GetText();  
            if(name){
                cout<<"name:"<IterateChildren(child);  
            const char* addr = child->ToElement()->GetText();  
            if (addr) {  
                cout<<"addr:"<IterateChildren(child);  
            const char* tel = child->ToElement()->GetText();  
            if (tel)
                cout<<"tel:"<IterateChildren(child);  
            const char* email = child->ToElement()->GetText();  
            if(email)
                cout<<"email:"<return true;
}

2.4 test.cpp

#include "tinyxml/tinyxml.h"
#include 
#include "myxml.h"
using namespace std;
int main(){
    string filePath = "test.xml";
    ParserXml pxml(filePath);
    bool okflag = pxml.Parser();
    if(!okflag)
        return -1;
    return 0;
}

3输出

输出结果如下图:
C++ tinyxml的封装与使用_第2张图片

你可能感兴趣的:(c++)