WBXML_DECLARE(WBXMLError) wbxml_tree_to_xml(WBXMLTree *tree, WB_UTINY **xml, WB_ULONG *xml_len, WBXMLGenXMLParams *params) { WBXMLEncoder *wbxml_encoder = NULL; WBXMLError ret = WBXML_OK; /* Create WBXML Encoder */ if ((wbxml_encoder = wbxml_encoder_create()) == NULL) { return WBXML_ERROR_NOT_ENOUGH_MEMORY; } /* Set the WBXML Tree to encode */ wbxml_encoder_set_tree(wbxml_encoder, tree); /* Set encoder parameters */ if (params == NULL) { /* Default Values */ /* Set XML Generation Type */ wbxml_encoder_set_xml_gen_type(wbxml_encoder, WBXML_GEN_XML_INDENT); /* Set Indent */ wbxml_encoder_set_indent(wbxml_encoder, 0); /* Skip Ignorable Whitespaces */ wbxml_encoder_set_ignore_empty_text(wbxml_encoder, TRUE); wbxml_encoder_set_remove_text_blanks(wbxml_encoder, TRUE); } else { /* Set XML Generation Type */ wbxml_encoder_set_xml_gen_type(wbxml_encoder, params->gen_type); /* Set Indent */ if (params->gen_type == WBXML_GEN_XML_INDENT) wbxml_encoder_set_indent(wbxml_encoder, params->indent); /* Ignorable Whitespaces */ if (params->keep_ignorable_ws) { wbxml_encoder_set_ignore_empty_text(wbxml_encoder, FALSE); wbxml_encoder_set_remove_text_blanks(wbxml_encoder, FALSE); } else { wbxml_encoder_set_ignore_empty_text(wbxml_encoder, TRUE); wbxml_encoder_set_remove_text_blanks(wbxml_encoder, TRUE); } /** @todo Add parameter to call : wbxml_encoder_set_output_charset() */ } /* Encode WBXML Tree to XML */ ret = wbxml_encoder_encode_tree_to_xml(wbxml_encoder, xml, xml_len); /* Clean-up */ wbxml_encoder_destroy(wbxml_encoder); return ret; }
WBXML_DECLARE(WBXMLError) wbxml_tree_to_wbxml(WBXMLTree *tree, WB_UTINY **wbxml, WB_ULONG *wbxml_len, WBXMLGenWBXMLParams *params) { WBXMLEncoder *wbxml_encoder = NULL; WBXMLError ret = WBXML_OK; /* Encode WBXML Tree to WBXML Document */ if ((wbxml_encoder = wbxml_encoder_create()) == NULL) { return WBXML_ERROR_NOT_ENOUGH_MEMORY; } /* Set the WBXML Tree to encode */ wbxml_encoder_set_tree(wbxml_encoder, tree); /* Set encoder parameters */ if (params == NULL) { /* Default Parameters */ /* Ignores "Empty Text" Nodes */ wbxml_encoder_set_ignore_empty_text(wbxml_encoder, TRUE); /* Remove leading and trailing whitespaces in "Text Nodes" */ wbxml_encoder_set_remove_text_blanks(wbxml_encoder, TRUE); /* Use String Table */ wbxml_encoder_set_use_strtbl(wbxml_encoder, TRUE); /* Don't produce an anonymous document by default */ wbxml_encoder_set_produce_anonymous(wbxml_encoder, FALSE); } else { /* WBXML Version */ wbxml_encoder_set_wbxml_version(wbxml_encoder, params->wbxml_version); /* Keep Ignorable Whitespaces ? */ if (!params->keep_ignorable_ws) { /* Ignores "Empty Text" Nodes */ wbxml_encoder_set_ignore_empty_text(wbxml_encoder, TRUE); /* Remove leading and trailing whitespaces in "Text Nodes" */ wbxml_encoder_set_remove_text_blanks(wbxml_encoder, TRUE); } /* String Table */ wbxml_encoder_set_use_strtbl(wbxml_encoder, params->use_strtbl); /* Produce an anonymous document? */ wbxml_encoder_set_produce_anonymous(wbxml_encoder, params->produce_anonymous); /** @todo Add parameter to call : wbxml_encoder_set_output_charset() */ } /* Encode WBXML */ ret = wbxml_encoder_encode_to_wbxml(wbxml_encoder, wbxml, wbxml_len); /* Clean-up */ wbxml_encoder_destroy(wbxml_encoder); return ret; }