On Wed, Aug 20, 2014 at 07:04:06PM +0200, Iñigo Martínez wrote: > Hi: > > 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> > > I have seen some tricks using a xmlTextWriter, but in my case I need > an string not a file. > > Is there any way to avoid it ?
Best way is to use the 'new' saving APIs http://xmlsoft.org/html/libxml-xmlsave.html#xmlSaveToBuffer with XML_SAVE_NO_DECL in the option and use http://xmlsoft.org/html/libxml-xmlsave.html#xmlSaveDoc if you are piling up such messages on an IO just use anothe xmlSaveTo... function and Flush to output instead of writing in memory and doing the I/O separately Daniel -- Daniel Veillard | Open Source and Standards, Red Hat veill...@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | virtualization library http://libvirt.org/ _______________________________________________ xml mailing list, project page http://xmlsoft.org/ xml@gnome.org https://mail.gnome.org/mailman/listinfo/xml