• Linux下libxml2的使用


    http://www.cnblogs.com/flysnail/archive/2012/06/25/2561319.html

    ----

    一、下载、安装

    下载libxml2,官方网站,下载合适自己版本的源码包。

    http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-devel

    俺下载的版本为libxml2-devel-2.6.32-11.10.i586

    解压缩,编译运行

    ./configure –prefix /usr/local/xml   #安装目录

    make

    make install

    安装完成后/usr/local/xml下会多生成4个文件夹

    bin  include  lib  share

    二、运行demo

    使用Eclipse开发,新建C++项目。

    1、解决头文件路径问题。

    默认包含的目录下面会自动添加libxml的头文件。如果Eclipse没有自动添加,我们可以手动添加,右键properties,进行以下修改

    俺安装后的头文件路径为

    $/include/libxml2/libxml/*.h

    而源代码里面的工作目录默认为<libxml/*.h>

    这时候工程是无法找到这些文件的,我们需要做的就是将目录修改一下。

    $/include/libxml/*.h

    当然,还有一种办法是将那些头文件的包含的代码修改一下。例如:

    #include < libxml/xmlversion.h >

    修改为

    #include < libxml2/libxml/xmlversion.h >

    这种方式是要将几十个头文件都做这种处理,俺才不会那么傻呢。

    2、demo src

    复制代码
    void  writeXML(void){
    
        //定义文档和节点指针
          xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");
          xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST"root");
          //设置根节点
          xmlDocSetRootElement(doc, root_node);
          //在根节点中直接创建节点
          xmlNewTextChild(root_node, NULL, BAD_CAST "newNode1", BAD_CAST "newNode1 content");
          xmlNewTextChild(root_node, NULL, BAD_CAST "newNode2", BAD_CAST "newNode2 content");
          xmlNewTextChild(root_node, NULL, BAD_CAST "newNode3", BAD_CAST "newNode3 content");
          //创建一个节点,设置其内容和属性,然后加入根结点
          xmlNodePtr node = xmlNewNode(NULL, BAD_CAST"node2");
          xmlNodePtr content = xmlNewText(BAD_CAST"NODE CONTENT");
          xmlAddChild(root_node, node);
          xmlAddChild(node,content);
          xmlNewProp(node,BAD_CAST"attribute", BAD_CAST "yes");
          //创建一个儿子和孙子节点
          node = xmlNewNode(NULL, BAD_CAST "son");
          xmlAddChild(root_node,node);
          xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST "grandson");
          xmlAddChild(node,grandson);
          xmlAddChild(grandson, xmlNewText(BAD_CAST "This is a grandson node"));
          //存储xml文档
          int nRel = 0;
          nRel = xmlSaveFile("CreatedXml.xml",doc);
          if (nRel != -1)
          {
             cout<<"一个xml文档被创建,写入"<<nRel<<"个字节"<<endl;
          }
          //释放文档内节点动态申请的内存
          xmlFreeDoc(doc);
    }
    复制代码

    3、设置lib

    Eclipse设置链接路径: /usr/local/xml/lib

    设置连接库 xml2

    使用命令编译的时候,加上以下参数:

    -L /usr/local/xml/lib / -lxml2

    恩,下面编译执行就ok了。



  • 相关阅读:
    快速搭建http server
    cwmp part2 测试基础RPC
    Leetcode-5223 Queens That Can Attack the King(可以攻击国王的皇后)
    Leetcode-5222 Split a String in Balanced Strings(分割平衡字符串)
    Leetcode-5224 Dice Roll Simulation(掷骰子模拟)
    P2604-[ZJOI2010]网络扩容
    P2053-[SCOI2007]修车
    P2153-[SDOI2009]晨跑
    P2774 方格取数问题
    P2763-试题库问题
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/2660702.html
Copyright © 2020-2023  润新知