Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}