c - libxml2 避免 xml 版本

标签 c libxml2

我正在使用基于 XML 的协议(protocol),例如:

<Command Timestamp="0" ReceptionTimeStamp="0" Sender="P1" Receiver="P2"><GetData/></Command>

我可以使用 xmlReadMemory 并在树中导航成功解析这些消息。当尝试创建我自己的消息时,我可以通过这种方式成功创建它们:

doc = xmlNewDoc(NULL);
node = xmlNewNode(NULL, BAD_CAST "Command");
xmlDocSetRootElement(doc, node);

xmlNewProp(node, BAD_CAST "Timestamp", BAD_CAST "0");
xmlNewProp(node, BAD_CAST "ReceptionTimestamp", BAD_CAST "0");
xmlNewProp(node, BAD_CAST "Sender", BAD_CAST "P1");
xmlNewProp(node, BAD_CAST "Receiver", BAD_CAST "P2");

xmlNewChild(node, NULL, BAD_CAST "GetData", NULL);

当我在输出中获取 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);

关于c - libxml2 避免 xml 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410366/

相关文章:

Python XPath 结果仅显示 []

c - 如何让libxml2不显示连接错误?

c - 如果用户输入的长度超过 16 个字符,为什么我的 C 程序会打印两次消息?

iOS 大文件 llseek 或 lseek64

c - 每个字节的负周期? rdtsc C

python-2.7 - 无法在 Python 2.7 和 CentOS 7 中导入 libxml2 和 libxslt

C 段错误链表

c - 优化磁盘 IO

ios - 如何从iOS写入XML文件?

c++ - 在没有 API 的情况下以编程方式重命名 excel 工作表