If the val_value_t node represents a leaf or a leaf-list node and its value can be converted to a string format then the following API can be used to malloc a buffer that holds an xmlChar string:
/******************************************************************** * FUNCTION val_make_sprintf_string * * Malloc a buffer and then sprintf the xmlChar string * NETCONF representation of a simple value * * INPUTS: * val == value to print * * RETURNS: * malloced buffer with string represetation of the * 'val' value node * NULL if some error *********************************************************************/ xmlChar * val_make_sprintf_string (const val_value_t *val)
As an example this API can be used as follows:
/******************************************************************** * FUNCTION print_children * * Dump children values * ********************************************************************/ static void print_children (val_value_t *val, const char *which) { val_value_t *child = NULL; log_debug("\n %s %s P:[%p] :", which, val ? VAL_NAME(val) : NCX_EL_NULL, val); if (val) { val_dump_value(val, 5, DBG4); strval = val_get_first_child(val); while (child) { if (VAL_TYPE(child) && typ_is_simple(VAL_TYPE(child))) { xmlChar *valstr = val_make_sprintf_string(child); if (valstr == NULL) { res = ERR_INTERNAL_MEM; return; } log_debug4("\nchild: %s:'%s'", VAL_NAME(child), valstr); m__free(valstr); } child = val_get_next_child(child); } } } /* print_children */