网址: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

【转】libxml2 如何获得某个节点的所有信息的更多相关文章

  1. webots自学笔记(二)节点与机器人建模

    原创文章,出自"博客园, _阿龙clliu" :http://www.cnblogs.com/clliu/ 上一次介绍了界面和一个简单的自由落体,然而在实际运用中,机器人的结构都是 ...

  2. vue项目中使用bpmn-流程图xml文件中节点属性转json结构

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...

  3. 【微信小程序开发•系列文章六】生命周期和路由

    这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...

  4. Spring总结—— IOC 和 Bean 的总结

    一.Spring 官方文档中给出的 Spring 的整体结构. 二.我自己所理解的 Spring 整体结构图. 三.本次总结 Spring 核心部分 1.从上面图中可以看出,Beans 和 Conte ...

  5. B+树的特点

    1.B+树是应文件系统产生的B树的变种.它依然是一颗多路查找树,与B树相比它的不同体现在: (1).如果非叶子节点包含n个关键码,则这个节点有n个子树. (2).非叶子节点仅包含关键码信息,叶子节点包 ...

  6. POJ 2104&HDU 2665 Kth number(主席树入门+离散化)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 50247   Accepted: 17101 Ca ...

  7. UiAutomator源码分析之获取控件信息

    根据上一篇文章<UiAutomator源码分析之注入事件>开始时提到的计划,这一篇文章我们要分析的是第二点: 如何获取控件信息 我们在测试脚本中初始化一个UiObject的时候通常是像以下 ...

  8. hadoop各个类及其作用

    1.基础包(包括工具包和安全包) 包括工具和安全包.其中,hdfs.util包含了一些HDFS实现需要的辅助数据结构:hdfs.security.token.block和hdfs.security.t ...

  9. 从虚拟dom了解vue渲染函数

    vue渲染函数就是render函数,他会返回一个VNode,VNode是一个js对象,是dom的映射 vue在介绍渲染函数那个章节看的不是很懂,所以想要彻底的理解渲染函数,首先需要了解vue的虚拟do ...

随机推荐

  1. 机器学习理论基础学习16---高斯网络(GN)

    一.高斯网络(高斯图模型)总体介绍 概率图模型分为三种:贝叶斯网络,马尔科夫随机场以及高斯网络:而高斯网络又可以根据有向无向细分为高斯贝叶斯网络和高斯马尔科夫随机场 二.高斯贝叶斯网络 1.高斯贝叶斯 ...

  2. gerrit 使用教程(一)

    原文地址:https://www.jianshu.com/p/b77fd16894b6 1, Gerrit是什么? Gerrit实际上一个Git服务器,它为在其服务器上托管的Git仓库提供一系列权限控 ...

  3. 批量导入数据到mssql数据库的

    概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...

  4. 【剑指Offer学习】【面试题3 :二维数组中的查找】

    package 二维数组查找; public class Test03 { /** * 在一个二维数组中,每一行都按 package 二维数组查找; public class Test03 { /** ...

  5. 学习Css补充知识点

    1.text-transform: capitalize;UpperCase等 2.border-size:box,边框在定义的宽高范围内画,  content默认,在宽高外画.元互的宽高只指内容 3 ...

  6. LibSVM源码剖析(java版)

    之前学习了SVM的原理(见http://www.cnblogs.com/bentuwuying/p/6444249.html),以及SMO算法的理论基础(见http://www.cnblogs.com ...

  7. Xcode10.x适配的部分问题

    因为我们项目是一个Workspace,由若干个库组成(组件化比较碎),又涉及到海外和国内(存在很多差异性),整个项目的编译是由每个库的脚本(每个库生成会支持32位和64位,每次编译前会清除历史缓存), ...

  8. Google、亚马逊、微软 、阿里巴巴开源软件一览

    Google.亚马逊.微软 .阿里巴巴开源软件一览 大公司为什么要发布开源项目?一是开源能够帮助他人更快地开发软件,促进世界创新,主要是社会价值层面的考虑.二是开源能够倒逼工程师写出更好的代码.三是开 ...

  9. ACM题目————Sunscreen

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  10. MySQL Crash Course #04# Chapter 7. 8 AND. OR. IN. NOT. LIKE

    索引 AND. OR 运算顺序 IN Operator VS. OR NOT 在 MySQL 中的表现 LIKE 之注意事项 运用通配符的技巧 Understanding Order of Evalu ...