struct _xml_data { char *title; char *url; char *author; }; typedef struct _xml_data xml_data; Evas_List *something() { Evas_List *themes = NULL; while(some_condition) { xml_data *theme; theme = calloc(1, sizeof(xml_data)); theme->title = strdup(exml_value_get(..., "title", ...)); theme->title = strdup(exml_value_get(..., "url", ...)); theme->title = strdup(exml_value_get(..., "author", ...)); themes = evas_list_append(themes, theme); } return themes; } /* * dont forget to free things when you are done */