Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59028
  • 博文数量: 10
  • 博客积分: 520
  • 博客等级: 中士
  • 技术积分: 232
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-11 17:00
文章分类

全部博文(10)

文章存档

2010年(1)

2009年(5)

2008年(4)

我的朋友

分类: C/C++

2009-11-13 14:40:21

C语言解析XML文件实现起来很麻烦,最简单地做法是使用开源的LIBXML2库。
 

int ReadConfig(char *file_name,char *key, char val[])
{
    xmlChar *psXml = NULL;
    char xmlPath[1024] = "/CONFIG/";
    xmlXPathContextPtr pXmlContext = NULL;
    xmlXPathObjectPtr pXPathObject = NULL;

    xmlDocPtr pXmlDoc = NULL;
    pXmlDoc = xmlReadFile(file_name, NULL, 0);
    if(pXmlDoc == NULL)
    {
        return -1;
    }
    strcat(xmlPath, key);
    pXmlContext = xmlXPathNewContext(pXmlDoc);
    if(pXmlContext == NULL)
    {
        return -1;
    }
    pXPathObject = xmlXPathEvalExpression((xmlChar *)xmlPath, pXmlContext);
    if(pXPathObject == NULL)
    {
        xmlXPathFreeContext(pXmlContext);
        return -1;
    }
    xmlXPathFreeContext(pXmlContext);
    if(pXPathObject->nodesetval->nodeNr > 0)
    {
        psXml = xmlNodeGetContent(pXPathObject->nodesetval->nodeTab[0]);
        if(psXml != NULL)
        {
            strcpy(val, (char *)psXml);
        }
    }
    xmlXPathFreeObject(pXPathObject);
    xmlFreeDoc(pXmlDoc);
    return 0;
}


阅读(644) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~