[libgdata/gxml] * support namespaces more
- From: Richard Hans Schwarting <rschwart src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgdata/gxml] * support namespaces more
- Date: Sat, 24 Sep 2011 06:23:20 +0000 (UTC)
commit b703c12b618e368bfc4b65c743cce05f80452677
Author: Richard Schwarting <aquarichy gmail com>
Date: Wed Sep 21 11:45:49 2011 -0400
* support namespaces more
gdata/gdata-parser.c | 35 +++++++++++++++++------------------
1 files changed, 17 insertions(+), 18 deletions(-)
---
diff --git a/gdata/gdata-parser.c b/gdata/gdata-parser.c
index 06c6c5d..4cd8070 100644
--- a/gdata/gdata-parser.c
+++ b/gdata/gdata-parser.c
@@ -31,32 +31,29 @@
static gchar *
print_element (GXmlDomXNode *node)
{
- // TODO:GXML: support namespaces
- /* gboolean node_has_ns = (node->ns == NULL || node->ns->prefix == NULL || */
- /* xmlStrcmp (node->ns->href, (xmlChar*) "http://www.w3.org/2005/Atom") == 0) ? FALSE : TRUE; */
- gboolean node_has_ns = FALSE; // < TODO:GXML: remove
+ const gchar *uri = gxml_dom_xnode_get_namespace_uri (node);
+ gboolean node_has_ns = (uri == NULL || gxml_dom_xnode_get_prefix (node) == NULL ||
+ g_strcmp0 (uri, "http://www.w3.org/2005/Atom") == 0) ? FALSE : TRUE;
GXmlDomXNode *parent = gxml_dom_xnode_get_parent_node (node);
if (parent == NULL) {
/* No parent node */
if (node_has_ns == TRUE)
- // return g_strdup_printf ("<%s:%s>", node->ns->prefix, node->name); // TODO:GXML
- return g_strdup_printf ("NAMESPACENOTSUPPORTED");
+ return g_strdup_printf ("<%s:%s>", gxml_dom_xnode_get_prefix (node), gxml_dom_xnode_get_node_name (node));
else
return g_strdup_printf ("<%s>", gxml_dom_xnode_get_node_name (node));
} else {
/* We have a parent node, which makes things a lot more complex */
- // TODO:GXML: support namespaces
- /* gboolean parent_has_ns = (node->parent->type == XML_DOCUMENT_NODE || node->parent->ns == NULL || node->parent->ns->prefix == NULL || */
- /* xmlStrcmp (node->parent->ns->href, (xmlChar*) "http://www.w3.org/2005/Atom") == 0) ? FALSE : TRUE; */
- gboolean parent_has_ns = FALSE; // < TODO:GXML: remove
+
+ GXmlDomXNode *parent = gxml_dom_xnode_get_parent_node (node);
+ gboolean parent_has_ns = (parent != NULL /* TODO:GXML:make sure that the root element does not return the Document as its parent, or we have to check type as well */ ||
+ gxml_dom_xnode_get_namespace_uri (parent) == NULL || gxml_dom_xnode_get_prefix (parent) == NULL ||
+ g_strcmp0 (gxml_dom_xnode_get_namespace_uri (parent), "http://www.w3.org/2005/Atom") == 0) ? FALSE : TRUE;
if (parent_has_ns == TRUE && node_has_ns == TRUE)
- //return g_strdup_printf ("<%s:%s/%s:%s>", node->parent->ns->prefix, node->parent->name, node->ns->prefix, node->name);// TODO:GXML
- return g_strdup_printf ("NAMESPACENOTSUPPORTED");
+ return g_strdup_printf ("<%s:%s/%s:%s>", gxml_dom_xnode_get_prefix (parent), gxml_dom_xnode_get_node_name (parent), gxml_dom_xnode_get_prefix (node), gxml_dom_xnode_get_node_name (node));
else if (parent_has_ns == FALSE && node_has_ns == TRUE)
- //return g_strdup_printf ("<%s/%s:%s>", node->parent->name, node->ns->prefix, node->name);// TODO:GXML
- return g_strdup_printf ("NAMESPACENOTSUPPORTED");
+ return g_strdup_printf ("<%s/%s:%s>", gxml_dom_xnode_get_node_name (parent), gxml_dom_xnode_get_prefix (node), gxml_dom_xnode_get_node_name (node));
else
return g_strdup_printf ("<%s/%s>", gxml_dom_xnode_get_node_name (parent), gxml_dom_xnode_get_node_name (node));
}
@@ -327,10 +324,12 @@ gdata_parser_boolean_from_property (GXmlDomXNode *element, const gchar *property
gboolean
gdata_parser_is_namespace (GXmlDomXNode *element, const gchar *namespace_uri)
{
- // TODO:GXML: namespace support
- /* if ((element->ns != NULL && xmlStrcmp (element->ns->href, (const xmlChar*) namespace_uri) == 0) || */
- /* (element->ns == NULL && strcmp (namespace_uri, "http://www.w3.org/2005/Atom") == 0)) */
- /* return TRUE; */
+ const gchar *uri = gxml_dom_xnode_get_namespace_uri (element);
+
+ if ((uri != NULL && g_strcmp0 (uri, namespace_uri) == 0) ||
+ (uri == NULL && g_strcmp0 ("http://www.w3.org/2005/Atom", namespace_uri) == 0))
+ return TRUE;
+
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]