]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: Add helper to convert libxml2 nodes to a string
authorPeter Krempa <pkrempa@redhat.com>
Wed, 4 Sep 2013 14:49:40 +0000 (16:49 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 17 Sep 2013 07:42:49 +0000 (09:42 +0200)
src/libvirt_private.syms
src/util/virxml.c
src/util/virxml.h

index c6be79187634a57c22ff9e98ac30dbd5aed34dbd..e6be9e0bb3732fac28e99ad5dc86426d0a8dfe47 100644 (file)
@@ -2092,6 +2092,7 @@ virUUIDParse;
 
 # util/virxml.h
 virXMLChildElementCount;
+virXMLNodeToString;
 virXMLParseHelper;
 virXMLPickShellSafeComment;
 virXMLPropString;
index f652ee0fadc533fb86e1378af880b7d01ca7f511..6d1a2e93955437d20430c489df2727faaf75478a 100644 (file)
@@ -895,3 +895,36 @@ virXMLChildElementCount(xmlNodePtr node)
     }
     return ret;
 }
+
+
+/**
+ * virXMLNodeToString: convert an XML node ptr to an XML string
+ *
+ * Returns the XML string of the document or NULL on error.
+ * The caller has to free the string.
+ */
+char *
+virXMLNodeToString(xmlDocPtr doc,
+                   xmlNodePtr node)
+{
+     xmlBufferPtr xmlbuf = NULL;
+     char *ret = NULL;
+
+     if (!(xmlbuf = xmlBufferCreate())) {
+         virReportOOMError();
+         return NULL;
+     }
+
+     if (xmlNodeDump(xmlbuf, doc, node, 0, 1) == 0) {
+         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                        _("failed to convert the XML node tree"));
+         goto cleanup;
+     }
+
+     ignore_value(VIR_STRDUP(ret, (const char *)xmlBufferContent(xmlbuf)));
+
+cleanup:
+     xmlBufferFree(xmlbuf);
+
+     return ret;
+}
index 364288dd5514be1fc58f134602ae1b282c5facf7..bb340699ba646672a509ae1a2efff739641af0a5 100644 (file)
@@ -163,4 +163,6 @@ int virXMLSaveFile(const char *path,
                    const char *warnCommand,
                    const char *xml);
 
+char *virXMLNodeToString(xmlDocPtr doc, xmlNodePtr node);
+
 #endif                          /* __VIR_XML_H__ */