From b091b3df3e209a5b36c1d6c71175144bc4618c58 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Sat, 9 Aug 2008 17:14:48 -0300 Subject: [PATCH] Reading AtomPerson from a XML node --- atom/person.c | 21 +++++++++++++++++++++ include/atompub/person-xml.h | 1 + 2 files changed, 22 insertions(+) diff --git a/atom/person.c b/atom/person.c index 62f9ed4..b60e46e 100644 --- a/atom/person.c +++ b/atom/person.c @@ -106,3 +106,24 @@ atom_person_to_xmlnode (AtomPerson *person, char *elname) 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 = content; + else if (!xmlStrcmp (child->name, "email")) + person->email = content; + else + xmlFree (content); + } + return person; +} diff --git a/include/atompub/person-xml.h b/include/atompub/person-xml.h index 69b7508..7d333c0 100644 --- a/include/atompub/person-xml.h +++ b/include/atompub/person-xml.h @@ -25,5 +25,6 @@ #include xmlNodePtr atom_person_to_xmlnode (AtomPerson *, char *); +AtomPerson * atom_person_new_from_xmlnode (xmlNodePtr); #endif -- 2.20.1