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