C libxml2避免xml版本

C libxml2避免xml版本,c,libxml2,C,Libxml2,我正在使用基于XML的协议,类似于: <Command Timestamp="0" ReceptionTimeStamp="0" Sender="P1" Receiver="P2"><GetData/></Command> 当我在输出中获取xml版本时,尝试获取对应的字符串时会出现问题: <?xml version="1.0"?><Command Timestamp="0" ReceptionTimeStamp="0" Sender="P1

我正在使用基于XML的协议,类似于:

<Command Timestamp="0" ReceptionTimeStamp="0" Sender="P1" Receiver="P2"><GetData/></Command>
当我在输出中获取xml版本时,尝试获取对应的字符串时会出现问题:

<?xml version="1.0"?><Command Timestamp="0" ReceptionTimeStamp="0" Sender="P1" Receiver="P2"><GetData/></Command>


有什么办法可以避免吗?

我已经找到了一个解决方案/解决办法,将xmlNodeDump与根节点一起使用:

xmlBufferPtr buf = xmlBufferCreate();
int size = xmlNodeDump(buf, NULL, node, 0, 0);
printf ("%s\n", buf->content);
xmlBufferFree (buf);

出于好奇,既然版本是有效的XML,那么想要删除它的原因是什么?我仍然需要尝试,但目前我只想要一个等效的字符串。我不确定对方是否会期待它。我也是这样做的,只是我没有为它创建
xmlDocument
,只有根
xmlNode
(和子节点)本身。请注意,
xmlNodeDump()
返回内容长度,因此您可以选择将其传递给
printf()
,而不依赖存在空终止符。很好!我已经更新了代码。关于不依赖空终止符,您是指这个吗?printf(“%s”,大小,基本单位->内容);是的,这就是我的意思。
xmlBufferPtr buf = xmlBufferCreate();
int size = xmlNodeDump(buf, NULL, node, 0, 0);
printf ("%s\n", buf->content);
xmlBufferFree (buf);