Hi,
Try to use cl_ixml .
Convert the string to xstring
CALL METHOD cl_bcs_convert=>string_to_xstring
And here is a sample using cl_ixml .
TYPES: BEGIN OF tp_alv_data_1 .
TYPES: date TYPE char32 ,
name TYPE char32 ,
currency TYPE char32 ,
country TYPE char32 ,
rate TYPE char32 ,
ukurs TYPE tcurr-ukurs ,
change TYPE char32 .
TYPES: END OF tp_alv_data_1 .
*
TYPES: tp_alv_data_1_tab TYPE STANDARD TABLE OF tp_alv_data_1 .
FORM do_xml_parse_1
USING
xml_string TYPE xstring
CHANGING
it_alv_data_1 TYPE tp_alv_data_1_tab .
IF xml_string IS INITIAL .
RETURN .
ENDIF .
DATA: st_alv_data_1 LIKE LINE OF it_alv_data_1 .
g_ixml = cl_ixml=>create( ).
DATA: streamfactory TYPE REF TO if_ixml_stream_factory.
streamfactory = g_ixml->create_stream_factory( ).
DATA: istream TYPE REF TO if_ixml_istream.
istream = streamfactory->create_istream_xstring( string = xml_string ).
DATA: document TYPE REF TO if_ixml_document.
document = g_ixml->create_document( ) .
DATA: parser TYPE REF TO if_ixml_parser.
parser = g_ixml->create_parser( stream_factory = streamfactory
istream = istream
document = document ).
parser->parse( ).
*------------------------------
DATA: date TYPE string .
DATA: name TYPE string .
DATA: value TYPE string .
*------------------------------
DATA: nodes_x TYPE REF TO if_ixml_node_collection .
DATA: node_x TYPE REF TO if_ixml_node .
nodes_x = document->get_elements_by_tag_name( name = 'LAST_UPDATE' ).
node_x = nodes_x->get_item( 0 ) .
name = node_x->get_name( ) .
date = node_x->get_value( ) .
st_alv_data_1-date = node_x->get_value( ) .
*------------------------------
DATA: length_0 TYPE i .
DATA: nodes_0 TYPE REF TO if_ixml_node_collection.
DATA: node_0 TYPE REF TO if_ixml_node .
DATA: length_1 TYPE i .
DATA: nodes_1 TYPE REF TO if_ixml_node_list .
DATA: node_1 TYPE REF TO if_ixml_node .
nodes_0 = document->get_elements_by_tag_name( name = 'CURRENCY' ).
length_0 = nodes_0->get_length( ) .
DATA: index TYPE i .
DO length_0 TIMES .
index = sy-index - 1 .
node_0 = nodes_0->get_item( index ) .
name = node_0->get_name( ) .
value = space .
nodes_1 = node_0->get_children( ) .
length_1 = nodes_1->get_length( ).
DO length_1 TIMES .
index = sy-index - 1 .
node_1 = nodes_1->get_item( index ).
name = node_1->get_name( ) .
value = node_1->get_value( ) .
CASE name .
WHEN 'NAME' .
st_alv_data_1-name = value .
WHEN 'CURRENCYCODE' .
st_alv_data_1-currency = value .
WHEN 'COUNTRY' .
st_alv_data_1-country = value .
WHEN 'RATE' .
st_alv_data_1-rate = value .
st_alv_data_1-ukurs = value .
WHEN 'CHANGE' .
st_alv_data_1-change = value .
ENDCASE .
ENDDO .
APPEND st_alv_data_1 TO it_alv_data_1 .
ENDDO .
ENDFORM . "do_xml_parse_1
Regards.