}
AtomContent *
-atom_content_new_data_len (char *buffer, size_t len)
+atom_content_new_from_xmlnode (xmlNodePtr root)
{
AtomContent *content;
- xmlDocPtr doc;
- xmlNodePtr root;
xmlNodePtr child;
- doc = xmlReadMemory (buffer, len, NULL, NULL,
- XML_PARSE_RECOVER | XML_PARSE_NOERROR);
- if (doc == NULL || (root = xmlDocGetRootElement (doc)) == NULL)
- return NULL;
if (xmlStrcmp (root->name, "content"))
{
- xmlFreeDoc (doc);
return NULL;
}
content = g_slice_new0 (AtomContent);
if ((content->type = xmlGetProp (root, "type")) == NULL)
{
g_slice_free (AtomContent, content);
- xmlFreeDoc (doc);
return NULL;
}
content->src = xmlGetProp (root, "src");
content->content_len = xmlStrlen (content->content);
}
}
+ return content;
+}
+
+AtomContent *
+atom_content_new_data_len (char * buffer, size_t len)
+{
+ AtomContent *content;
+ xmlDocPtr doc;
+ xmlNodePtr root;
+ doc = xmlReadMemory (buffer, len, NULL, NULL,
+ XML_PARSE_RECOVER | XML_PARSE_NOERROR);
+ if (doc == NULL || (root = xmlDocGetRootElement (doc)) == NULL)
+ return NULL;
+ content = atom_content_new_from_xmlnode (root);
xmlFreeDoc (doc);
return content;
}
#include <libxml/tree.h>
AtomContent * atom_content_new_xmlnode (char *, xmlNodePtr);
+AtomContent * atom_content_new_from_xmlnode (xmlNodePtr);
xmlNodePtr atom_content_to_xmlnode (AtomContent *);
xmlNodePtr atom_content_content_to_xmlnode (AtomContent *);
void atom_content_content_set_xmlnode (AtomContent *, xmlNodePtr);