libxml xmlNodePtr到原始xml字符串?

时间:2011-11-22 18:45:14

标签: c libxml2

给定一个有效的,任意的xmlNodePtr,我想要该节点的字符串表示形式,包括相同形式的标签,属性和子节点(递归)。

FWIW,我的方案是我使用PerformXPathQuery从现有文档中获取数据块。我需要将查询的结果(其中嵌有XML元素)作为原始字符串,因此我可以将其插入到文本字段中。

这似乎是一项简单的任务,但我找不到一个简单的方法。将xmlDocPtr写入文件必须这样做,但是,我看不到一个方便的方法,它将对树中的任意节点执行相同的操作,并将其返回到内存中。

我希望我只是在xmlsoft.org的棕色棕色文档配色方案中失明

3 个答案:

答案 0 :(得分:6)

xmlNodeDump(或xmlNodeDumpOutput)您要找的是什么?

答案 1 :(得分:5)

我用于将节点转储到字符串的代码。它是客观的 - 所以只需根据需要更改输出。

xmlBufferPtr buffer = xmlBufferCreate();
int size = xmlNodeDump(buffer, myXMLDoc, myXMLNode, 0, 1);

NSLog(@"%d", size);
NSLog(@"%s", buffer->content);

不要忘记再次释放缓冲区。

答案 2 :(得分:1)

您可以做的一种方法是创建一个新文档,然后使用xmlDocCopyNode将节点复制到其中并对其进行序列化。