Auslesen eines Tag aus einer XML-File
Posted: Mon Mar 30, 2015 9:58 am
Hallo zusammen,
in letzter Zeit hatte ich mich einmal auf die Suche nach einem Beispielcode zum Auslesen eines TAG aus einer XML-File gemacht. Jetzt bin ich auf eine Lösung gestoßen die ich an dieser Stelle für die Nachwelt kundtun möchte.
Verarbeitung einer XML-File
Beispielcode zum Auslesen eines Tag aus einer XML-File
DATA(ixml) = cl_ixml=>create( ).
DATA(stream_factory) = ixml->create_stream_factory( ).
DATA(document) = ixml->create_document( ).
DATA(parser) = ixml->create_parser(
document = document
stream_factory = stream_factory
istream = stream_factory->create_istream_string( string = i_xml ) ).
IF parser->parse( ) <> 0.
* process_errors( parser ).
ELSE.
IF document IS INITIAL.
RETURN.
ENDIF.
DATA(iterator) = document->create_iterator( ).
DATA(node) = iterator->get_next( ).
WHILE NOT node IS INITIAL.
lv_node_height = node->get_height( ).
CASE node->get_type( ).
WHEN if_ixml_node=>co_node_element.
DATA(attributes) = node->get_attributes( ).
lv_node_name = node->get_name( ).
lv_node_value = node->get_value( ).
IF lv_letzter_node_name = 'Name' AND
lv_node_name = 'UserID' AND
lv_user = lv_node_value.
ENDIF.
IF lv_letzter_node_name = 'Referenz' AND
lv_node_name = 'AuftragUid' AND
lv_auftrag_id = lv_node_value.
ENDIF.
IF lv_letzter_node_name = 'AuftragUid' AND
lv_node_name = 'ReplyLevel' AND
lv_reply_level = lv_node_value.
ENDIF.
ENDCASE.
lv_letzter_node_name = lv_node_name.
node = iterator->get_next( ).
ENDWHILE.
Ich hoffe, dieses Coding inspiriert Euren Spirit bei der Verarbeitung von XML-Files.
Natürlich gibt es auch in der SAP-Bibliothek entsprechende Einträge, aber aus meiner subjektiven Sicht ist das alles nicht barrierefrei!
Gruß
Euer Pit60
in letzter Zeit hatte ich mich einmal auf die Suche nach einem Beispielcode zum Auslesen eines TAG aus einer XML-File gemacht. Jetzt bin ich auf eine Lösung gestoßen die ich an dieser Stelle für die Nachwelt kundtun möchte.
Verarbeitung einer XML-File
Beispielcode zum Auslesen eines Tag aus einer XML-File
DATA(ixml) = cl_ixml=>create( ).
DATA(stream_factory) = ixml->create_stream_factory( ).
DATA(document) = ixml->create_document( ).
DATA(parser) = ixml->create_parser(
document = document
stream_factory = stream_factory
istream = stream_factory->create_istream_string( string = i_xml ) ).
IF parser->parse( ) <> 0.
* process_errors( parser ).
ELSE.
IF document IS INITIAL.
RETURN.
ENDIF.
DATA(iterator) = document->create_iterator( ).
DATA(node) = iterator->get_next( ).
WHILE NOT node IS INITIAL.
lv_node_height = node->get_height( ).
CASE node->get_type( ).
WHEN if_ixml_node=>co_node_element.
DATA(attributes) = node->get_attributes( ).
lv_node_name = node->get_name( ).
lv_node_value = node->get_value( ).
IF lv_letzter_node_name = 'Name' AND
lv_node_name = 'UserID' AND
lv_user = lv_node_value.
ENDIF.
IF lv_letzter_node_name = 'Referenz' AND
lv_node_name = 'AuftragUid' AND
lv_auftrag_id = lv_node_value.
ENDIF.
IF lv_letzter_node_name = 'AuftragUid' AND
lv_node_name = 'ReplyLevel' AND
lv_reply_level = lv_node_value.
ENDIF.
ENDCASE.
lv_letzter_node_name = lv_node_name.
node = iterator->get_next( ).
ENDWHILE.
Ich hoffe, dieses Coding inspiriert Euren Spirit bei der Verarbeitung von XML-Files.
Natürlich gibt es auch in der SAP-Bibliothek entsprechende Einträge, aber aus meiner subjektiven Sicht ist das alles nicht barrierefrei!
Gruß
Euer Pit60