SAP NetWeaver AS ABAP Release 740, ©Copyright 2014 SAP AG. All rights reserved.
ABAP Keyword Documentation → ABAP − Reference → Data Interfaces and Communication Interfaces → ABAP and XML → Transformations for XML → asXML - Canonical XML Representation → asXML, Examples of Mappings →asXML, Mapping of XML Fragments
The example demonstrates the mapping of XML fragments.
Source Code
REPORT demo_asxml_fragment.
CLASS demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
PRIVATE SECTION.
CLASS-DATA out TYPE REF TO if_demo_output.
CLASS-METHODS prepare_fragment
RETURNING VALUE(xml) TYPE xstring.
CLASS-METHODS serialize
IMPORTING source TYPE any
node TYPE string
trafo TYPE string
text TYPE string
RETURNING VALUE(result) TYPE xstring.
CLASS-METHODS deserialize
IMPORTING source TYPE xstring
node TYPE string
trafo TYPE string
text TYPE string
EXPORTING result TYPE any.
ENDCLASS.
CLASS demo IMPLEMENTATION.
METHOD main.
DATA: xstr TYPE xstring,
xsdstr TYPE xsdany,
xmlstr1 TYPE xstring,
xmlstr2 TYPE xstring.
out = cl_demo_output=>new( ).
xstr = prepare_fragment( ).
xmlstr1 = serialize(
source = xstr
node = 'ROOT'
trafo = 'ID'
text = 'XSLT-Serialization of XML-Fragment from XSTRING' ).
xsdstr = xstr.
xmlstr1 = serialize(
source = xsdstr
node = 'ROOT'
trafo = 'ID'
text = 'XSLT-Serialization of XML-Fragment from XSDANY' &
' into node ROOT' ).
xmlstr2 = serialize(
source = xsdstr
node = 'X'
trafo = 'ID'
text = 'XSLT-Serialization of XML-Fragment from XSDANY' &
' into node X' ).
deserialize(
EXPORTING
source = xmlstr1
node = 'ROOT'
trafo = 'ID'
text = 'XSLT-Deserialization of XSLT-result with node ROOT' &
' into XSTRING'
IMPORTING result = xstr ).
deserialize(
EXPORTING
source = xmlstr2
node = 'X'
trafo = 'ID'
text = 'XSLT-Deserialization of XSLT-result with node X' &
' into XSTRING'
IMPORTING result = xstr ).
deserialize(
EXPORTING
source = xmlstr1
node = 'ROOT'
trafo = 'ID'
text = 'XSLT-Deserialization of XSLT-result with node ROOT' &
' into XSDANY'
IMPORTING result = xsdstr ).
deserialize(
EXPORTING
source = xmlstr2
node = 'X'
trafo = 'ID'
text = 'XSLT-Deserialization of XSLT-result with node X' &
' into XSDANY'
IMPORTING result = xsdstr ).
deserialize(
EXPORTING
source = xmlstr1
node = 'X'
trafo = 'ID'
text = 'XSLT-Deserialization of XSLT-result with node ROOT' &
' into XSDANY using node X'
IMPORTING result = xsdstr ).
deserialize(
EXPORTING
source = xmlstr2
node = 'ROOT'
trafo = 'ID'
text = 'XSLT-Deserialization of XSLT-result with node X' &
' into XSDANY using node ROOT'
IMPORTING result = xsdstr ).
out->display( ).
ENDMETHOD.
METHOD prepare_fragment.
out->begin_section(
)->begin_section( 'XML-Fragment' ).
xml = cl_abap_codepage=>convert_to(
`<?xml version="1.0" encoding="utf-8" ?>` &&
`<X>` &&
`Text` &&
`<X1>Text1</X1>` &&
`<X2>Text1</X2>` &&
`</X>` ).
out->write_xml( xml
)->end_section( ).
ENDMETHOD.
METHOD serialize.
DATA(source_tab) = VALUE abap_trans_srcbind_tab(
( name = node value = REF #( source ) ) ).
TRY.
out->begin_section( text ).
CALL TRANSFORMATION (trafo)
SOURCE (source_tab)
RESULT XML result.
out->write_xml( result ).
CATCH cx_transformation_error.
out->write_text( 'Error' ).
ENDTRY.
out->end_section( ).
ENDMETHOD.
METHOD deserialize.
DATA(result_tab) = VALUE abap_trans_resbind_tab(
( name = node value = REF #( result ) ) ).
TRY.
out->begin_section( text ).
CALL TRANSFORMATION (trafo)
SOURCE XML source
RESULT (result_tab)
OPTIONS clear = 'all'.
IF result IS NOT INITIAL.
out->write_xml( result ).
ELSE.
out->write_text( 'Initial' ).
ENDIF.
CATCH cx_transformation_error.
out->write_text( 'Error' ).
ENDTRY.
out->end_section( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo=>main( ).
Description
This example demonstrates the serialization and deserialization of XML fragments and their representation in asXML using the identity transformation ID.
For information about serializations and deserializations of XML fragments using simple transformations, see ST, Mapping of XML Fragments.