XML en formato UTF-8

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Jamez Betancourt
    Junior Member
    • jul
    • 6

    #1

    XML en formato UTF-8

    Necesito grabar un xml en formato utf-8 pero no veo el caracter especial al inicio del archivo que indica que es utf-8 como cuando se hace con el notepad, es correcto? de antemano gracias por la ayuda
    Codigo ejemplo:
    REPORT YBORRAME3 .
    TYPE-POOLS TRUXS.
    data: nom_archivo(50) TYPE c,
    g_arch_enviar(128) TYPE c.
    * data: L_RESULT TYPE ETXML_LINE_STR.
    CONSTANTS: ENCODING(5) VALUE 'UTF-8'.

    DATA: L_RIF_IXML TYPE REF TO IF_IXML,
    l_rif_streamfactory type ref to if_ixml_stream_factory,
    l_rif_parser type ref to if_ixml_parser,
    l_rif_istream type ref to if_ixml_istream,
    l_rif_document type ref to if_ixml_document,
    l_rif_node type ref to if_ixml_node,
    l_var_xmldata type string,
    l_var_xmldata2 type string,
    l_var_cstr type xstring,
    l_rif_ostream type ref to if_ixml_ostream,
    l_rif_encoding type ref to if_ixml_encoding,
    l_rif_renderer_cstr type ref to if_ixml_renderer,
    l_var_ret type i.

    data: l_var_dsn type string.

    l_var_xmldata = '<?xml version="1.0" encoding="utf-8"?><C dr="ñ" "></C>'
    .
    nom_archivo = 'utf8.xml'.

    * Text-001 Ruta de unix a donde enviara el Archivo.
    CONCATENATE '/tmp/' nom_archivo INTO g_arch_enviar.

    CLASS cl_ixml DEFINITION LOAD.
    * Create cebtral fatory object
    l_rif_ixml = cl_ixml=>create( ).

    * Create factory object for data streams
    l_rif_streamfactory = l_rif_ixml->create_stream_factory( ).

    * Create object for input stream
    l_rif_istream = l_rif_streamfactory->create_istream_string( string =
    l_var_xmldata ).

    * Create document
    l_rif_document = l_rif_ixml->create_document( ).

    * Create parser
    l_rif_parser = l_rif_ixml->create_parser( document = l_rif_document
    stream_factory = l_rif_streamfactory
    istream = l_rif_istream ).

    * create dom tree by parsing
    if l_rif_parser->parse( ) <> 0.
    data: j(2).
    j = '9'.
    * do exception handling here
    * return.
    endif.

    *create output objetct
    l_rif_ostream =
    l_rif_streamfactory->create_ostream_xstring( string = l_var_cstr ).

    *create file in utf-8 code
    l_rif_encoding = l_rif_ixml->create_encoding( character_set = 'UTF-8'
    byte_order = 0 ).

    CALL METHOD l_rif_ostream->SET_ENCODING
    EXPORTING
    ENCODING = l_rif_encoding.

    * create renderer objetct
    l_rif_renderer_cstr =
    l_rif_ixml->create_renderer( document = l_rif_document
    ostream = l_rif_ostream ).
    * use renderer
    l_var_ret = l_rif_renderer_cstr->render( ).

    * Close output stream
    *call method istream->close( )
    call method l_rif_ostream->close( ).

    *l_rif_ostream->close( ).

    *Writing string to file

    open dataset g_arch_enviar FOR OUTPUT in binary mode.
    transfer l_var_cstr to g_arch_enviar.
    close dataset g_arch_enviar.
Trabajando...