windows 系统在vs2010 中配置libxml2,及读取xml代码样例

1、先下载libxml2 (下载地址 http://download.csdn.net/detail/luoww1/8095273)。里面包含了三个目录分别:zlib-1.2.3.win32 和iconv-1.9.2.win32 和libxml2-2.7.6.win32

2、将下载内容中的iconv.dll 和zlib1.dll 复制到C盘下的Windows目录中

3、在项目中新建include 目录。解压的到的libxml2和iconv中的include目录中的内容拷入到该include目录中,若项目名称为proxyServer,目录结构如图所看到的


4、VS2010项目proxyServer,右击。选择“属性”-->C/C++-->常规 在附加包括文件夹中加入

.\include

5、将iconv.lib 和iconv_a.lib和libxml2.lib和libxml2_a.lib放在项目根文件夹中,可见上面的图片

6、VS2010项目proxyServer,右击,选择“属性”-->链接器-->输入中加入

iconv.lib ;iconv_a.lib;libxml2.lib;libxml2_a.lib

</pre>7、project中用libxml2读取xml文件的代码<pre name="code" class="cpp">#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main(int argc, char** argv) {
xmlDocPtr doc;           //定义解析文档指针
    xmlNodePtr curNode;      //定义结点指针(你须要它为了在各个结点间移动)
    xmlChar *szKey;          //暂时字符串变量
    char szDocName[] = "Device.xml";
    using std::string;
    using std::cout;
    using std::endl;
    
    doc = xmlReadFile(szDocName,"UTF-8",XML_PARSE_RECOVER); //解析文件
    //检查解析文档是否成功,假设不成功。libxml将指一个注冊的错误并停止。

//一个常见错误是不适当的编码。XML标准文档除了用UTF-8或UTF-16外还可用其他编码保存。 //假设文档是这样。libxml将自己主动地为你转换到UTF-8。

很多其他关于XML编码信息包括在XML标准中. if (NULL == doc) { //文档打开错误 return -1; } curNode = xmlDocGetRootElement(doc); //确定文档根元素 /*检查确认当前文档中包括内容*/ if (NULL == curNode) { //空得xml文件 xmlFreeDoc(doc); return -2; } /*在这个样例中,我们须要确认文档是正确的类型。“Devices”是在这个演示样例中使用文档的根类型。*/ if (xmlStrcmp(curNode->name, BAD_CAST "Devices")) { //分析根元素失败 xmlFreeDoc(doc); return -3; } curNode = curNode->xmlChildrenNode; xmlNodePtr propNodePtr = curNode;//xmlNodePtr 节点列表的指针 while(curNode != NULL) { //取出节点中的内容 if ((!xmlStrcmp(curNode->name, (const xmlChar *)"Device"))) //取出节点Device的内容 { szKey = xmlNodeGetContent(curNode);//获取内容 cout << szKey << endl; xmlFree(szKey); } //查找带有属性url的节点 if (xmlHasProp(curNode,BAD_CAST "url")) { propNodePtr = curNode; //cout<< xmlGetProp(propNodePtr,BAD_CAST "url") <<endl;//输出URL的值 } curNode = curNode->next; } //查找属性 xmlAttrPtr attrPtr = propNodePtr->properties; //xmlAttrPtr 属性列表的指针 while (attrPtr != NULL) { if (!xmlStrcmp(attrPtr->name, BAD_CAST "url")) { xmlChar* szAttr = xmlGetProp(propNodePtr,BAD_CAST "url"); cout << szAttr << endl; //找到url的属性 xmlFree(szAttr); } attrPtr = attrPtr->next; } xmlFreeDoc(doc);//函数关闭文档指针,并清除本文档中全部节点动态申请的内存 }

8、Device.xml 文件的内容

<?

xml version="1.0" encoding="GB2312"?

> <Devices> <Device url="www.baidu.com" /> <Device url="www.taobao.com"/> </Devices>




转载于:https://www.cnblogs.com/ljbguanli/p/6830147.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值