• 【转】libxml2 如何获得某个节点的所有信息


    网址:http://bbs.csdn.net/topics/380115580

    顶楼:

    我的需求是这样的,我使用libxml2从内存中解析一个xml文件,需要修改某个节点下的一个子节点,修改完成之后,我只想取得上面的那个节点中的所有内容信息,并不想获取整个xml文件信息,然后拿这个节点的所有信息进行其他操作,如:输出到文件中,或写入的一个变量中,再进行其他操作…… 求各位大侠不吝赐教!例如:
    <domain type="kvm">
      <name>xuteng-win7</name> 
      <uuid>3906e42c-2002-1902-c474-52c222b95e91</uuid> 
      <memory>4194304</memory> 
      <currentMemory>1048576</currentMemory> 
      <vcpu>2</vcpu> 
      <os>
      <type arch="x86_64" machine="rhel6.0.0">hvm</type> 
      <boot dev="hd" /> 
      </os>
    </domain>

    当我修改os节点后
      <os>
      <type arch="x86_64" machine="rhel6.0.0">hvm</type> 
      <boot dev="ssssss" /> 
      </os>
    现在我只想得到os节点的所有内容,如上所示,请问该如何实现,或许libxml2已经有相应的API函数,但是我没有找到,希望大虾们不吝赐教,在下感激不尽!

    1楼:

    呵呵,问题已经解决! 翻遍了libxml2的API,在tree.h中有两个函数被我发现,一个是xmlNodeDump,另一个是xmlNodeDumpOutput,我用的是第一个,另一个用法基本上一样,有兴趣的童鞋们可以试试! 
    具体做法是定义一个指针变量 xmlBufferPtr xml_buf = NULL;
    然后创建xmlBUfferPtr, xml_buf = xmlBufferCreate();
    再调用 xmlNodeDump(xml_buf, doc, node, 0, 0);
    再将该节点的内容存入一个变量当中: const xmlChar xml = xmlBufferContent(xml_buf);

    用完之后释放内存 
    xmlFree(xml);
    xmlBufferFree(xml_buf);
    xmlFreeDoc(doc);
    xmlCleanupParser();

    ZZ

  • 相关阅读:
    SqlServer Function 实例
    技术清单
    SQLSERVER 链接服务器执行存储过程
    SQLSERVER 链接服务器
    Oracle 新手语法记录
    MarkDown 语法备份
    C# WebAPI小记
    Rabbit MQ 学习 (二)
    Rabbit MQ 学习 (一)Window安装Erlang环境
    [vue2,nodejs,echarts,json]调查问卷
  • 原文地址:https://www.cnblogs.com/cppskill/p/7918899.html
Copyright © 2020-2023  润新知