remove old xml code

This commit is contained in:
larshp 2016-03-06 11:28:05 +00:00
parent 55c9fd61b5
commit 84a4fe7a32

View File

@ -1053,544 +1053,6 @@ CLASS lcl_user IMPLEMENTATION.
ENDCLASS. "lcl_user IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS lcl_xml DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*CLASS lcl_xml DEFINITION FINAL CREATE PUBLIC.
*
* PUBLIC SECTION.
* DATA: mi_xml_doc TYPE REF TO if_ixml_document.
*
* METHODS constructor
* IMPORTING iv_xml TYPE string OPTIONAL
* iv_empty TYPE sap_bool DEFAULT abap_false
* RAISING lcx_exception.
*
* METHODS element_add
* IMPORTING ig_element TYPE data
* iv_name TYPE string OPTIONAL
* ii_root TYPE REF TO if_ixml_element OPTIONAL
* RAISING lcx_exception.
*
* METHODS element_read
* IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
* iv_name TYPE string OPTIONAL
* EXPORTING ev_success TYPE abap_bool
* CHANGING cg_element TYPE data
* RAISING lcx_exception.
*
* METHODS structure_add
* IMPORTING ig_structure TYPE data
* iv_name TYPE string OPTIONAL
* ii_root TYPE REF TO if_ixml_element OPTIONAL
* RAISING lcx_exception.
*
* METHODS structure_read
* IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
* iv_name TYPE string OPTIONAL
* EXPORTING ev_success TYPE abap_bool
* CHANGING cg_structure TYPE data
* RAISING lcx_exception.
*
* METHODS table_add
* IMPORTING it_table TYPE STANDARD TABLE
* iv_name TYPE string OPTIONAL
* iv_stable TYPE abap_bool DEFAULT abap_false
* ii_root TYPE REF TO if_ixml_element OPTIONAL
* RAISING lcx_exception.
*
* METHODS table_read
* IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
* iv_name TYPE string OPTIONAL
* CHANGING ct_table TYPE STANDARD TABLE
* RAISING lcx_exception.
*
* METHODS xml_render
* IMPORTING iv_normalize TYPE sap_bool DEFAULT abap_true
* RETURNING VALUE(rv_string) TYPE string.
*
* METHODS xml_element
* IMPORTING iv_name TYPE string
* RETURNING VALUE(ri_element) TYPE REF TO if_ixml_element.
*
* METHODS xml_add
* IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
* ii_element TYPE REF TO if_ixml_element.
*
* METHODS xml_find
* IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
* iv_name TYPE string
* RETURNING VALUE(ri_element) TYPE REF TO if_ixml_element.
*
* PRIVATE SECTION.
* DATA: mi_ixml TYPE REF TO if_ixml,
* mi_root TYPE REF TO if_ixml_element.
*
* METHODS special_names
* CHANGING cv_name TYPE string.
*
* METHODS display_xml_error
* RAISING lcx_exception.
*
* METHODS error
* IMPORTING ii_parser TYPE REF TO if_ixml_parser
* RAISING lcx_exception.
*
*ENDCLASS. "lcl_xml DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_xml IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*CLASS lcl_xml IMPLEMENTATION.
*
* METHOD xml_find.
*
* DATA: li_root LIKE ii_root.
*
*
* IF ii_root IS BOUND.
* li_root = ii_root.
* ELSE.
* li_root = mi_root.
* ENDIF.
*
* ri_element = li_root->find_from_name( depth = 0 name = iv_name ).
* IF NOT ri_element IS BOUND.
* RETURN.
* ENDIF.
* li_root->remove_child( ri_element ).
*
* ENDMETHOD. "xml_find
*
* METHOD xml_element.
*
* ri_element = mi_xml_doc->create_element( iv_name ).
*
* ENDMETHOD. "xml_element
*
* METHOD special_names.
*
* IF cv_name(1) = '*'.
* CONCATENATE 'STAR' cv_name+1 INTO cv_name.
* ELSEIF cv_name(1) = '2'.
* CONCATENATE 'TWO' cv_name+1 INTO cv_name.
* ENDIF.
*
* ENDMETHOD. "special_names
*
* METHOD structure_read.
*
* DATA: lv_name TYPE string,
* li_struct TYPE REF TO if_ixml_element,
* lo_typedescr TYPE REF TO cl_abap_typedescr,
* lo_descr_ref TYPE REF TO cl_abap_structdescr.
*
* FIELD-SYMBOLS: <lg_any> TYPE any,
* <ls_comp> LIKE LINE OF lo_descr_ref->components.
*
*
* CLEAR cg_structure.
* ev_success = abap_true.
*
* lo_descr_ref ?= cl_abap_typedescr=>describe_by_data( cg_structure ).
* IF iv_name IS INITIAL.
* lv_name = lo_descr_ref->get_relative_name( ).
* IF lv_name IS INITIAL.
* _raise 'no name, structure read'.
* ENDIF.
* ELSE.
* lv_name = iv_name.
* ENDIF.
*
* li_struct = xml_find( ii_root = ii_root
* iv_name = lv_name ).
* IF NOT li_struct IS BOUND.
* ev_success = abap_false.
* RETURN.
* ENDIF.
*
* LOOP AT lo_descr_ref->components ASSIGNING <ls_comp>.
* ASSIGN COMPONENT <ls_comp>-name OF STRUCTURE cg_structure TO <lg_any>.
* ASSERT sy-subrc = 0.
*
* lv_name = <ls_comp>-name.
* special_names( CHANGING cv_name = lv_name ).
*
* lo_typedescr = cl_abap_typedescr=>describe_by_data( <lg_any> ).
* CASE lo_typedescr->kind.
* WHEN cl_abap_typedescr=>kind_table.
* table_read( EXPORTING ii_root = li_struct
* iv_name = lv_name
* CHANGING ct_table = <lg_any> ).
* WHEN cl_abap_typedescr=>kind_struct.
* structure_read( EXPORTING ii_root = li_struct
* iv_name = lv_name
* CHANGING cg_structure = <lg_any> ).
* WHEN cl_abap_typedescr=>kind_elem.
* element_read( EXPORTING ii_root = li_struct
* iv_name = lv_name
* CHANGING cg_element = <lg_any> ).
* WHEN cl_abap_typedescr=>kind_ref.
* CONTINUE.
* WHEN OTHERS.
* _raise 'unknown kind, structure read'.
* ENDCASE.
* ENDLOOP.
*
* ENDMETHOD. "structure_read
*
* METHOD table_read.
*
* DATA: lv_name TYPE string,
* li_root TYPE REF TO if_ixml_element,
* lv_kind TYPE abap_typecategory,
* lv_index TYPE i,
* lv_success TYPE abap_bool,
* lo_data_descr TYPE REF TO cl_abap_datadescr,
* lo_table_descr TYPE REF TO cl_abap_tabledescr.
*
* FIELD-SYMBOLS: <lg_line> TYPE any.
*
*
* CLEAR ct_table[].
*
* lo_table_descr ?= cl_abap_typedescr=>describe_by_data( ct_table ).
* lv_name = lo_table_descr->get_relative_name( ).
*
* IF lv_name IS INITIAL.
* lv_name = iv_name.
* ENDIF.
*
* IF lv_name IS INITIAL.
* _raise 'no name, table read'.
* ENDIF.
*
* li_root = xml_find( ii_root = ii_root
* iv_name = lv_name ).
* IF NOT li_root IS BOUND.
* RETURN.
* ENDIF.
*
* lo_data_descr = lo_table_descr->get_table_line_type( ).
* lv_kind = lo_data_descr->kind.
*
* DO.
* APPEND INITIAL LINE TO ct_table ASSIGNING <lg_line>.
* CASE lv_kind.
* WHEN cl_abap_typedescr=>kind_struct.
* structure_read( EXPORTING ii_root = li_root
* IMPORTING ev_success = lv_success
* CHANGING cg_structure = <lg_line> ).
* WHEN cl_abap_typedescr=>kind_elem.
* element_read( EXPORTING ii_root = li_root
* IMPORTING ev_success = lv_success
* CHANGING cg_element = <lg_line> ).
* WHEN OTHERS.
* _raise 'unknown kind'.
* ENDCASE.
*
* IF lv_success = abap_false.
* lv_index = lines( ct_table ).
* DELETE ct_table INDEX lv_index.
* ASSERT sy-subrc = 0.
* EXIT. " current loop
* ENDIF.
* ENDDO.
*
* ENDMETHOD. "table_read
*
* METHOD error.
*
* DATA: lv_error TYPE i,
* lv_txt1 TYPE string,
* lv_txt2 TYPE string,
* lv_txt3 TYPE string,
* lv_times TYPE i,
* li_error TYPE REF TO if_ixml_parse_error.
*
*
* IF ii_parser->num_errors( ) <> 0.
* lv_times = ii_parser->num_errors( ).
* DO lv_times TIMES.
* lv_error = sy-index - 1.
* li_error = ii_parser->get_error( lv_error ).
*
* lv_txt1 = li_error->get_column( ).
* CONCATENATE 'Column:' lv_txt1 INTO lv_txt1. "#EC NOTEXT
* lv_txt2 = li_error->get_line( ).
* CONCATENATE 'Line:' lv_txt2 INTO lv_txt2. "#EC NOTEXT
* lv_txt3 = li_error->get_reason( ).
*
* CALL FUNCTION 'POPUP_TO_INFORM'
* EXPORTING
* titel = 'Error from XML parser' "#EC NOTEXT
* txt1 = lv_txt1
* txt2 = lv_txt2
* txt3 = lv_txt3.
* ENDDO.
* ENDIF.
*
* _raise 'Error while parsing XML'.
* ENDMETHOD. "error
*
* METHOD constructor.
*
* CONSTANTS: c_version TYPE string VALUE 'version' ##NO_TEXT,
* c_abapgit_tag TYPE string VALUE 'abapGit'.
*
* DATA: li_stream_factory TYPE REF TO if_ixml_stream_factory,
* li_istream TYPE REF TO if_ixml_istream,
* li_version TYPE REF TO if_ixml_node,
* li_parser TYPE REF TO if_ixml_parser.
*
*
* mi_ixml = cl_ixml=>create( ).
* mi_xml_doc = mi_ixml->create_document( ).
*
* IF iv_xml IS SUPPLIED.
* li_stream_factory = mi_ixml->create_stream_factory( ).
* li_istream = li_stream_factory->create_istream_string( iv_xml ).
* li_parser = mi_ixml->create_parser( stream_factory = li_stream_factory
* istream = li_istream
* document = mi_xml_doc ).
* li_parser->set_normalizing( abap_false ).
* IF li_parser->parse( ) <> 0.
* error( li_parser ).
* ENDIF.
*
* li_istream->close( ).
*
* mi_root = mi_xml_doc->find_from_name( depth = 0 name = c_abapgit_tag ).
*
* li_version = mi_root->if_ixml_node~get_attributes( )->get_named_item_ns( c_version ).
* IF li_version->get_value( ) <> gc_xml_version.
* display_xml_error( ).
* ENDIF.
* ELSEIF iv_empty = abap_false.
* mi_root = mi_xml_doc->create_element( c_abapgit_tag ).
* mi_root->set_attribute( name = c_version value = gc_xml_version ). "#EC NOTEXT
* mi_xml_doc->append_child( mi_root ).
* ENDIF.
* ENDMETHOD. "xml_root
*
* METHOD display_xml_error.
*
* DATA: lv_version TYPE string.
*
*
* lv_version = |abapGit version: { gc_abap_version }|.
*
* CALL FUNCTION 'POPUP_TO_INFORM'
* EXPORTING
* titel = 'abapGit XML version mismatch'
* txt1 = 'abapGit XML version mismatch'
* txt2 = 'See https://github.com/larshp/abapGit/wiki/XML-Mismatch'
* txt3 = lv_version. "#EC NOTEXT
*
* _raise 'XML error'.
*
* ENDMETHOD.
*
* METHOD table_add.
*
* DATA: lv_name TYPE string,
* li_table TYPE REF TO if_ixml_element,
* lv_kind TYPE abap_typecategory,
* lo_data_descr TYPE REF TO cl_abap_datadescr,
* lo_table_descr TYPE REF TO cl_abap_tabledescr.
*
* FIELD-SYMBOLS: <lg_line> TYPE any.
*
*
* lo_table_descr ?= cl_abap_typedescr=>describe_by_data( it_table ).
* lv_name = lo_table_descr->get_relative_name( ).
*
* IF lv_name IS INITIAL.
* lv_name = iv_name.
* ENDIF.
*
* IF lv_name IS INITIAL.
* _raise 'no name, table add'.
* ENDIF.
*
* li_table = mi_xml_doc->create_element( lv_name ).
* lo_data_descr = lo_table_descr->get_table_line_type( ).
* lv_kind = lo_data_descr->kind.
*
* LOOP AT it_table ASSIGNING <lg_line>.
* CASE lv_kind.
* WHEN cl_abap_typedescr=>kind_struct.
* structure_add( ig_structure = <lg_line>
* ii_root = li_table ).
* WHEN cl_abap_typedescr=>kind_elem.
* element_add( ig_element = <lg_line>
* ii_root = li_table ).
* WHEN OTHERS.
* _raise 'unknown kind'.
* ENDCASE.
* ENDLOOP.
*
* xml_add( ii_root = ii_root
* ii_element = li_table ).
*
* ENDMETHOD. "table_add
*
* METHOD xml_add.
*
* IF ii_root IS BOUND.
* ii_root->append_child( ii_element ).
* ELSE.
* mi_root->append_child( ii_element ).
* ENDIF.
*
* ENDMETHOD. "xml_add
*
* METHOD element_add.
*
* DATA: lo_descr TYPE REF TO cl_abap_elemdescr,
* lv_string TYPE string,
* li_element TYPE REF TO if_ixml_element,
* li_text TYPE REF TO if_ixml_text,
* lv_name TYPE string.
*
* lo_descr ?= cl_abap_typedescr=>describe_by_data( ig_element ).
*
* IF iv_name IS NOT INITIAL.
* lv_name = iv_name.
* ELSE.
* lv_name = lo_descr->get_relative_name( ).
* IF lv_name IS INITIAL.
* _raise 'no name, element add'.
* ENDIF.
* ENDIF.
*
* li_element = mi_xml_doc->create_element( lv_name ).
*
* lv_string = ig_element.
* li_text = mi_xml_doc->create_text( lv_string ).
*
* li_element->append_child( li_text ).
*
* xml_add( ii_root = ii_root
* ii_element = li_element ).
*
* ENDMETHOD. "element_add
*
* METHOD element_read.
*
* DATA: lo_descr TYPE REF TO cl_abap_elemdescr,
* li_element TYPE REF TO if_ixml_element,
* lv_name TYPE string.
*
*
* ev_success = abap_true.
*
* lo_descr ?= cl_abap_typedescr=>describe_by_data( cg_element ).
*
* IF iv_name IS INITIAL.
* lv_name = lo_descr->get_relative_name( ).
* IF lv_name IS INITIAL.
* _raise 'no name, element read'.
* ENDIF.
* ELSE.
* lv_name = iv_name.
* ENDIF.
*
* li_element = xml_find( ii_root = ii_root
* iv_name = lv_name ).
* IF NOT li_element IS BOUND.
* ev_success = abap_false.
* RETURN.
* ENDIF.
*
* cg_element = li_element->get_value( ).
*
* ENDMETHOD. "element_read
*
* METHOD structure_add.
*
* DATA: li_structure TYPE REF TO if_ixml_element,
* lv_name TYPE string,
* lo_typedescr TYPE REF TO cl_abap_typedescr,
* lo_descr TYPE REF TO cl_abap_structdescr.
*
* FIELD-SYMBOLS: <ls_comp> LIKE LINE OF lo_descr->components,
* <lg_any> TYPE any.
*
*
* lo_descr ?= cl_abap_typedescr=>describe_by_data( ig_structure ).
*
* IF iv_name IS INITIAL.
* lv_name = lo_descr->get_relative_name( ).
* IF lv_name IS INITIAL.
* _raise 'no name, structure add'.
* ENDIF.
* ELSE.
* lv_name = iv_name.
* ENDIF.
* li_structure = mi_xml_doc->create_element( lv_name ).
*
* LOOP AT lo_descr->components ASSIGNING <ls_comp>.
* ASSIGN COMPONENT <ls_comp>-name OF STRUCTURE ig_structure TO <lg_any>.
* ASSERT sy-subrc = 0.
*
* lv_name = <ls_comp>-name.
* special_names( CHANGING cv_name = lv_name ).
*
* lo_typedescr = cl_abap_typedescr=>describe_by_data( <lg_any> ).
* CASE lo_typedescr->kind.
* WHEN cl_abap_typedescr=>kind_table.
* table_add( it_table = <lg_any>
* iv_name = lv_name
* ii_root = li_structure ).
* WHEN cl_abap_typedescr=>kind_struct.
* structure_add( ig_structure = <lg_any>
* iv_name = lv_name
* ii_root = li_structure ).
* WHEN cl_abap_typedescr=>kind_elem.
* element_add( ig_element = <lg_any>
* iv_name = lv_name
* ii_root = li_structure ).
* WHEN cl_abap_typedescr=>kind_ref.
* CONTINUE.
* WHEN OTHERS.
* _raise 'unknown kind, structure add'.
* ENDCASE.
*
* ENDLOOP.
*
* xml_add( ii_root = ii_root
* ii_element = li_structure ).
*
* ENDMETHOD. "structure_to_xml
*
* METHOD xml_render.
** will render to codepage UTF-16
*
* DATA: li_ostream TYPE REF TO if_ixml_ostream,
* li_renderer TYPE REF TO if_ixml_renderer,
* li_streamfactory TYPE REF TO if_ixml_stream_factory.
*
*
* li_streamfactory = mi_ixml->create_stream_factory( ).
*
* li_ostream = li_streamfactory->create_ostream_cstring( rv_string ).
*
* li_renderer = mi_ixml->create_renderer( ostream = li_ostream
* document = mi_xml_doc ).
* IF iv_normalize = abap_true.
* li_renderer->set_normalizing( ).
* ENDIF.
* li_renderer->render( ).
*
* ENDMETHOD. "xml_render
*
*ENDCLASS. "lcl_xml IMPLEMENTATION
CLASS lcl_xml DEFINITION ABSTRACT.
PUBLIC SECTION.
@ -1653,7 +1115,8 @@ CLASS lcl_xml IMPLEMENTATION.
li_istream->close( ).
li_element = mi_xml_doc->find_from_name( depth = 0 name = c_abapgit_tag ).
li_version = li_element->if_ixml_node~get_attributes( )->get_named_item_ns( 'version' ).
li_version = li_element->if_ixml_node~get_attributes(
)->get_named_item_ns( 'version' ). ##NO_TEXT
IF li_version->get_value( ) <> gc_xml_version.
display_xml_error( ).
ENDIF.
@ -1855,7 +1318,7 @@ CLASS lcl_xml_input IMPLEMENTATION.
CALL TRANSFORMATION id
OPTIONS value_handling = 'accept_data_loss'
SOURCE XML mi_xml_doc
RESULT (lt_rtab).
RESULT (lt_rtab) ##NO_TEXT.
CATCH cx_transformation_error INTO lx_error.
lv_text = lx_error->if_message~get_text( ).
_raise lv_text.