mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
empty xml, fix #775
This commit is contained in:
parent
33bbe785ca
commit
b0b5f1e67c
|
@ -666,6 +666,8 @@ CLASS ltcl_xml DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
|||
METHODS:
|
||||
up FOR TESTING
|
||||
RAISING lcx_exception,
|
||||
empty FOR TESTING
|
||||
RAISING lcx_exception,
|
||||
down FOR TESTING
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
@ -684,6 +686,38 @@ ENDCLASS.
|
|||
|
||||
CLASS ltcl_xml IMPLEMENTATION.
|
||||
|
||||
METHOD empty.
|
||||
|
||||
DATA: ls_old TYPE st_old,
|
||||
ls_new TYPE st_new,
|
||||
lv_xml TYPE string,
|
||||
lo_input TYPE REF TO lcl_xml_input,
|
||||
lo_output TYPE REF TO lcl_xml_output.
|
||||
|
||||
|
||||
CLEAR ls_old.
|
||||
|
||||
CREATE OBJECT lo_output.
|
||||
lo_output->add( iv_name = 'DATA'
|
||||
ig_data = ls_old ).
|
||||
lv_xml = lo_output->render( ).
|
||||
|
||||
CREATE OBJECT lo_input
|
||||
EXPORTING
|
||||
iv_xml = lv_xml.
|
||||
lo_input->read( EXPORTING iv_name = 'DATA'
|
||||
CHANGING cg_data = ls_new ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ls_new-foo
|
||||
exp = ls_old-foo ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ls_new-bar
|
||||
exp = ls_old-bar ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD up.
|
||||
|
||||
DATA: ls_old TYPE st_old,
|
||||
|
|
|
@ -183,6 +183,8 @@ CLASS lcl_xml_output DEFINITION FINAL INHERITING FROM lcl_xml CREATE PUBLIC.
|
|||
add_xml
|
||||
IMPORTING iv_name TYPE clike
|
||||
ii_xml TYPE REF TO if_ixml_element,
|
||||
build_asx_node
|
||||
RETURNING VALUE(ri_element) TYPE REF TO if_ixml_element,
|
||||
render
|
||||
IMPORTING iv_normalize TYPE sap_bool DEFAULT abap_true
|
||||
is_metadata TYPE lif_defs=>ty_metadata OPTIONAL
|
||||
|
@ -260,17 +262,20 @@ CLASS lcl_xml_output IMPLEMENTATION.
|
|||
IF mi_raw IS INITIAL.
|
||||
li_abap ?= mi_xml_doc->get_root( )->get_first_child( ).
|
||||
mi_xml_doc->get_root( )->remove_child( li_abap ).
|
||||
IF li_abap IS INITIAL.
|
||||
li_abap = build_asx_node( ).
|
||||
ENDIF.
|
||||
ELSE.
|
||||
li_abap = mi_raw.
|
||||
ENDIF.
|
||||
|
||||
li_git = mi_xml_doc->create_element( c_abapgit_tag ).
|
||||
li_git->set_attribute( name = c_attr_version value = gc_xml_version ). "#EC NOTEXT
|
||||
li_git->set_attribute( name = c_attr_version value = gc_xml_version ).
|
||||
IF NOT is_metadata IS INITIAL.
|
||||
li_git->set_attribute( name = c_attr_serializer
|
||||
value = is_metadata-class ). "#EC NOTEXT
|
||||
value = is_metadata-class ).
|
||||
li_git->set_attribute( name = c_attr_serializer_version
|
||||
value = is_metadata-version ). "#EC NOTEXT
|
||||
value = is_metadata-version ).
|
||||
ENDIF.
|
||||
li_git->append_child( li_abap ).
|
||||
mi_xml_doc->get_root( )->append_child( li_git ).
|
||||
|
@ -279,6 +284,28 @@ CLASS lcl_xml_output IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "render
|
||||
|
||||
METHOD build_asx_node.
|
||||
|
||||
DATA: li_attr TYPE REF TO if_ixml_attribute.
|
||||
|
||||
|
||||
ri_element = mi_xml_doc->create_element_ns(
|
||||
name = 'abap'
|
||||
prefix = 'asx' ).
|
||||
|
||||
li_attr = mi_xml_doc->create_attribute_ns(
|
||||
name = 'version' ).
|
||||
li_attr->if_ixml_node~set_value( '1.0' ).
|
||||
ri_element->set_attribute_node_ns( li_attr ).
|
||||
|
||||
li_attr = mi_xml_doc->create_attribute_ns(
|
||||
name = 'asx'
|
||||
prefix = 'xmlns' ).
|
||||
li_attr->if_ixml_node~set_value( 'http://www.sap.com/abapxml' ).
|
||||
ri_element->set_attribute_node_ns( li_attr ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_xml_output IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
|
Loading…
Reference in New Issue
Block a user