#include <atompub/atom.h>
#include <glib.h>
+#include <libxml/tree.h>
struct _atom_person
{
g_free (person->email);
person->email = g_strdup (email);
}
+
+xmlNodePtr
+atom_person_to_xmlnode (AtomPerson *person, char *elname)
+{
+ xmlNodePtr node;
+ node = xmlNewNode (NULL, elname);
+ xmlNewTextChild (node, NULL, "name", person->name);
+ if (person->uri)
+ xmlNewTextChild (node, NULL, "uri", iri_get_string (person->uri));
+ if (person->email)
+ xmlNewTextChild (node, NULL, "email", person->email);
+ return node;
+}
+
+AtomPerson *
+atom_person_new_from_xmlnode (xmlNodePtr node)
+{
+ xmlNodePtr child;
+ AtomPerson *person;
+ person = g_slice_new0 (AtomPerson);
+ for (child = node->xmlChildrenNode; child != NULL; child = child->next)
+ {
+ char *content = xmlNodeGetContent (child->xmlChildrenNode);
+ if (!xmlStrcmp (child->name, "name"))
+ person->name = content;
+ else if (!xmlStrcmp (child->name, "uri"))
+ person->uri = iri_new_from_string (content);
+ else if (!xmlStrcmp (child->name, "email"))
+ person->email = content;
+ else
+ xmlFree (content);
+ }
+ return person;
+}