Mercurial > pidgin.yaz
comparison src/xmlnode.c @ 10425:9903182f2aac
[gaim-migrate @ 11677]
Added a util function to read an xml file and parse it into an xmlnode tree
Changed accounts.xml reading to use xmlnode's
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 26 Dec 2004 22:52:52 +0000 |
parents | 108151be77a3 |
children | 703f722d076f |
comparison
equal
deleted
inserted
replaced
10424:108151be77a3 | 10425:9903182f2aac |
---|---|
146 attrib_node->data = g_strdup(value); | 146 attrib_node->data = g_strdup(value); |
147 | 147 |
148 xmlnode_insert_child(node, attrib_node); | 148 xmlnode_insert_child(node, attrib_node); |
149 } | 149 } |
150 | 150 |
151 const char* | 151 const char * |
152 xmlnode_get_attrib(xmlnode *node, const char *attr) | 152 xmlnode_get_attrib(xmlnode *node, const char *attr) |
153 { | 153 { |
154 xmlnode *x; | 154 xmlnode *x; |
155 | 155 |
156 g_return_val_if_fail(node != NULL, NULL); | 156 g_return_val_if_fail(node != NULL, NULL); |
229 GString *str = NULL; | 229 GString *str = NULL; |
230 xmlnode *c; | 230 xmlnode *c; |
231 | 231 |
232 g_return_val_if_fail(node != NULL, NULL); | 232 g_return_val_if_fail(node != NULL, NULL); |
233 | 233 |
234 | |
235 for(c = node->child; c; c = c->next) { | 234 for(c = node->child; c; c = c->next) { |
236 if(c->type == XMLNODE_TYPE_DATA) { | 235 if(c->type == XMLNODE_TYPE_DATA) { |
237 if(!str) | 236 if(!str) |
238 str = g_string_new(""); | 237 str = g_string_new(""); |
239 str = g_string_append_len(str, c->data, c->data_sz); | 238 str = g_string_append_len(str, c->data, c->data_sz); |
244 return NULL; | 243 return NULL; |
245 | 244 |
246 return g_string_free(str, FALSE); | 245 return g_string_free(str, FALSE); |
247 } | 246 } |
248 | 247 |
249 static gchar * | 248 static char * |
250 xmlnode_to_str_helper(xmlnode *node, int *len, gboolean formatting, int depth) | 249 xmlnode_to_str_helper(xmlnode *node, int *len, gboolean formatting, int depth) |
251 { | 250 { |
252 GString *text = g_string_new(""); | 251 GString *text = g_string_new(""); |
253 xmlnode *c; | 252 xmlnode *c; |
254 char *node_name, *esc, *esc2, *tab = NULL; | 253 char *node_name, *esc, *esc2, *tab = NULL; |
315 *len = text->len; | 314 *len = text->len; |
316 | 315 |
317 return g_string_free(text, FALSE); | 316 return g_string_free(text, FALSE); |
318 } | 317 } |
319 | 318 |
320 gchar * | 319 char * |
321 xmlnode_to_str(xmlnode *node, int *len) | 320 xmlnode_to_str(xmlnode *node, int *len) |
322 { | 321 { |
323 return xmlnode_to_str_helper(node, len, FALSE, 0); | 322 return xmlnode_to_str_helper(node, len, FALSE, 0); |
324 } | 323 } |
325 | 324 |
326 gchar * | 325 char * |
327 xmlnode_to_formatted_str(xmlnode *node, int *len) | 326 xmlnode_to_formatted_str(xmlnode *node, int *len) |
328 { | 327 { |
329 gchar *xml, *xml_with_declaration; | 328 char *xml, *xml_with_declaration; |
330 | 329 |
331 xml = xmlnode_to_str_helper(node, len, TRUE, 0); | 330 xml = xmlnode_to_str_helper(node, len, TRUE, 0); |
332 xml_with_declaration = | 331 xml_with_declaration = |
333 g_strdup_printf("<?xml version='1.0' encoding='UTF-8' ?>\n\n%s", xml); | 332 g_strdup_printf("<?xml version='1.0' encoding='UTF-8' ?>\n\n%s", xml); |
334 g_free(xml); | 333 g_free(xml); |