分享

linux 下用libxml2读取xml文件实例

 mediatv 2013-10-29
#include <libxml/xmlreader.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
//编译选项
  gcc `xml2-config --cflags --libs` testxml.cpp
 g++ `xml2-config --cflags --libs` testxml.cpp
 g++ `xml2-config --cflags --libs` testxml.cpp
 g++ `xml2-config --cflags --libs` testxml.cpp
 g++ `xml2-config --cflags --libs` testxml.cpp
 g++ `xml2-config --cflags --libs` testxml.cpp

void printAttribute(xmlTextReaderPtr reader)  
{  
    if(1 == xmlTextReaderHasAttributes(reader))  
    {  
        xmlChar *name,*value;  
        int res = xmlTextReaderMoveToFirstAttribute(reader);  
        
        while(1 == res)  
        {  
            name = (xmlChar*)xmlTextReaderConstName(reader);  
            value = (xmlChar*)xmlTextReaderConstValue(reader);  
            fprintf(stderr, "\tattribute=[%s],value=[%s]\n", name, value);  
            res=xmlTextReaderMoveToNextAttribute(reader);  
        }  
        
        xmlTextReaderMoveToElement(reader);  
    }  
}  

void printNode(xmlTextReaderPtr reader)  
{  
    const xmlChar *name,*value;  
    name=xmlTextReaderConstName(reader);  
 
    if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_ELEMENT)  
    {  
        fprintf(stderr, "startMarkup=%s",name);  
        printAttribute(reader);  
    }
    else if(xmlTextReaderNodeType(reader)==XML_READER_TYPE_END_ELEMENT)  
    {  
        //fprintf(file,"endMarkup=%s",name);  
    }
    else  
    {  
        fprintf(stderr, "flag=%s", name);  
    }  

    if(xmlTextReaderHasValue(reader))  
    {  
        value=xmlTextReaderConstValue(reader);  
        fprintf(stderr, "\tvalue=%s", value);  
    }  
 
    fprintf(stderr, "\n");  
}  


int main(int argc, char** argv)
{
    static char memory[] = "<?xml version = \"1.0\" encoding = \"utf-8\" ?>"
                           "<msg>"
                           "<output area_code = \"100\" output_id = \"1\" />"
                           "</msg>";

    xmlTextReaderPtr reader;
    reader = xmlReaderForMemory(memory, strlen(memory), NULL, "UTF-8", 0);  
    if (reader == NULL)
    {
        cout << "xml file format error!!!!" << endl;
        return -1;
    }


    int ret=xmlTextReaderRead(reader);  
    while(ret == 1)  
    {  
        printNode(reader);  
        ret=xmlTextReaderRead(reader);  
    }  

    
    //element = xmlTextReaderName(reader);


    return 0;            
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多