简体   繁体   中英

libxml2 avoid xml version

I'm working with a protocol based on XML, something like:

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

I can successfully parse these messages using xmlReadMemory and navigating through the tree. When trying to create my own messages I can create them successfully this way:

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);

The problem comes when trying to get the correspondant string as I get the xml version in the output:

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

Is there any way to avoid it ?

I have find a solution/workaround by using xmlNodeDump with the root node:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM