They will be useful in subclasses to access the parsed document,
and to external users needing to directly interact with the
generated XML.
---
libvirt-gconfig/libvirt-gconfig-object.c | 18 ++++++++++++++++++
libvirt-gconfig/libvirt-gconfig-object.h | 2 ++
libvirt-gconfig/libvirt-gconfig.sym | 2 ++
3 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-object.c
b/libvirt-gconfig/libvirt-gconfig-object.c
index 6f80346..52e9be0 100644
--- a/libvirt-gconfig/libvirt-gconfig-object.c
+++ b/libvirt-gconfig/libvirt-gconfig-object.c
@@ -276,3 +276,21 @@ const gchar *gvir_config_object_get_schema(GVirConfigObject *config)
return priv->schema;
}
+/* NB: the xmlDocPtr must not be freed by the caller */
+xmlDocPtr gvir_config_object_get_xml_doc(GVirConfigObject *config, GError **error)
+{
+ gvir_config_object_parse(config, error);
+ return config->priv->docHandle;
+}
+
+/* FIXME: will we always have one xmlNode per GConfig object? */
+/* FIXME: need to return the right node from subclasses */
+/* NB: the xmlNodePtr must not be freed by the caller */
+xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config,
+ GError **error)
+{
+ gvir_config_object_parse(config, error);
+ if (error)
+ return NULL;
+ return config->priv->docHandle->children;
+}
diff --git a/libvirt-gconfig/libvirt-gconfig-object.h
b/libvirt-gconfig/libvirt-gconfig-object.h
index d08e97d..a0c0489 100644
--- a/libvirt-gconfig/libvirt-gconfig-object.h
+++ b/libvirt-gconfig/libvirt-gconfig-object.h
@@ -64,6 +64,8 @@ void gvir_config_object_validate(GVirConfigObject *config,
const gchar *gvir_config_object_get_doc(GVirConfigObject *config);
const gchar *gvir_config_object_get_schema(GVirConfigObject *config);
+xmlDocPtr gvir_config_object_get_xml_doc(GVirConfigObject *config, GError **error);
+xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config, GError **error);
G_END_DECLS
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
index 24407c3..d20e73b 100644
--- a/libvirt-gconfig/libvirt-gconfig.sym
+++ b/libvirt-gconfig/libvirt-gconfig.sym
@@ -26,6 +26,8 @@ LIBVIRT_GOBJECT_0.0.1 {
gvir_config_object_new;
gvir_config_object_get_doc;
gvir_config_object_get_schema;
+ gvir_config_object_get_xml_doc;
+ gvir_config_object_get_xml_node;
gvir_config_object_validate;
gvir_config_secret_get_type;
--
1.7.6.4