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);