X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=atom%2Fperson.c;h=899fb8fb694d62901c5fc2f221db1c051e61c98c;hb=01b135dee457f16f9061bff489081a2b649ae85b;hp=f0f653e40c63904e48322f2a577018746f8268fd;hpb=08735bf9a1fcc5d91dbdbd3ea77f2bc62db32f1f;p=cascardo%2Fatompub.git diff --git a/atom/person.c b/atom/person.c index f0f653e..899fb8f 100644 --- a/atom/person.c +++ b/atom/person.c @@ -20,6 +20,7 @@ #include #include +#include struct _atom_person { @@ -76,7 +77,7 @@ atom_person_uri_set (AtomPerson *person, IRI *uri) { if (person->uri) iri_delete (person->uri); - person->uri = uri; + person->uri = iri_copy (uri); } char * @@ -92,3 +93,37 @@ atom_person_email_set (AtomPerson *person, char *email) 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; +}