libxml2 求救…… libxml2 如何获得某个节点的所有信息

kingkisskill 2011-12-21 05:38:40
我的需求是这样的,我使用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函数,但是我没有找到,希望大虾们不吝赐教,在下感激不尽!
...全文
411 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
凡迪 2011-12-22
  • 打赏
  • 举报
回复
呵呵,你已经解决了,可惜了。最近刚好有在写libxml。以前学的,有点忘了
kingkisskill 2011-12-22
  • 打赏
  • 举报
回复
呵呵,问题已经解决! 翻遍了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();

69,387

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧