mirror of
https://gitea.psi.ch/ELOG/mxml.git
synced 2026-09-09 01:23:22 +00:00
Implemented mxml_print_tree
This commit is contained in:
parent
4d4b4cf17b
commit
ed60694e4c
40
mxml.cxx
40
mxml.cxx
@ -2192,6 +2192,46 @@ int mxml_write_tree(const char *file_name, PMXML_NODE tree)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* write a complete XML tree to a buffer
|
||||||
|
*/
|
||||||
|
int mxml_print_tree(char *buffer, int *buffer_size, PMXML_NODE tree)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
char *p;
|
||||||
|
MXML_WRITER *writer;
|
||||||
|
|
||||||
|
/* open file */
|
||||||
|
writer = mxml_open_buffer();
|
||||||
|
if (writer == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* write XML header */
|
||||||
|
mxml_start_element(writer, "xml");
|
||||||
|
|
||||||
|
for (int i=0 ; i<tree->n_children ; i++)
|
||||||
|
if (tree->child[i].node_type == ELEMENT_NODE) /* skip PI and comments */
|
||||||
|
if (!mxml_write_subtree(writer, &tree->child[i], TRUE))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
mxml_end_element(writer); // "xml"
|
||||||
|
p = mxml_close_buffer(writer);
|
||||||
|
|
||||||
|
strlcpy(buffer, p, *buffer_size);
|
||||||
|
len = strlen(p);
|
||||||
|
free(p);
|
||||||
|
p = NULL;
|
||||||
|
if (len > *buffer_size) {
|
||||||
|
*buffer_size = 0;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*buffer_size -= len;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
PMXML_NODE mxml_clone_tree(PMXML_NODE tree)
|
PMXML_NODE mxml_clone_tree(PMXML_NODE tree)
|
||||||
{
|
{
|
||||||
PMXML_NODE clone;
|
PMXML_NODE clone;
|
||||||
|
|||||||
2
mxml.h
2
mxml.h
@ -136,7 +136,7 @@ PMXML_NODE mxml_create_root_node(void);
|
|||||||
PMXML_NODE mxml_parse_file(const char *file_name, char *error, int error_size, int *error_line);
|
PMXML_NODE mxml_parse_file(const char *file_name, char *error, int error_size, int *error_line);
|
||||||
PMXML_NODE mxml_parse_buffer(const char *buffer, char *error, int error_size, int *error_line);
|
PMXML_NODE mxml_parse_buffer(const char *buffer, char *error, int error_size, int *error_line);
|
||||||
int mxml_parse_entity(char **buf, const char* file_name, char *error, int error_size, int *error_line);
|
int mxml_parse_entity(char **buf, const char* file_name, char *error, int error_size, int *error_line);
|
||||||
int mxml_write_tree(const char *file_name, PMXML_NODE tree);
|
int mxml_print_tree(char *buffer, int *buffer_size, PMXML_NODE tree);
|
||||||
void mxml_debug_tree(PMXML_NODE tree, int level);
|
void mxml_debug_tree(PMXML_NODE tree, int level);
|
||||||
void mxml_free_tree(PMXML_NODE tree);
|
void mxml_free_tree(PMXML_NODE tree);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user