Ansicht
Dokumentation

ABENABAP_IXML_LIB_INPUT_OUTPUT - ABAP IXML LIB INPUT OUTPUT

ABENABAP_IXML_LIB_INPUT_OUTPUT - ABAP IXML LIB INPUT OUTPUT

BAL_S_LOG - Application Log: Log header data   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Ströme und Dokumente

Ein- und Ausgabeströme

Zur Eingabe von XML-Daten in den Parser werden Eingabe- und zur Übernahme von XML-Daten aus dem Renderer werden Ausgabeströme verwendet. Für das Anlegen eines Stroms wird eine Factory benötigt, die wie folgt über die iXML-Factory erzeugt werden kann:

DATA(ixml) = cl_ixml=>create( ).
...
DATA(stream_factory) = ixml->create_stream_factory( ).

Der statische Typ der Referenzvariable stream_factory ist dann das Interface IF_IXML_STREAM_FACTORY, das Factory-Methoden CREATE_ISTREAM_... für Eingabe- und CREATE_OSTREAM_... für Ausgabeströme enthält.

Es können unterschiedliche Ströme für verschiedene Datenquellen und Datensenken erzeugt werden, wie Strings, interne Tabellen, oder durch URIs spezifizierte Dateien.

Hinweise

  • iXML-Eingabeströme können als XML-Quelle und iXML-Ausgabeströme als XML-Ziel für mit CALL TRANSFORMATION aufgerufene XSL-Transformationen angegeben werden.
  • Wenn Ausgabeströme an interne Tabellen mit byteartigem Zeilentyp angebunden werden, ist zu beachten, dass die letzte Zeile in der Regel nicht vollständig mit Inhalt aus dem Strom gefüllt wird. Die Länge der tatsächlichen Daten in der Zeile kann über den Rückgabewert der Methode GET_NUM_WRITTEN_RAW des Ausgabestroms modulo der Anzahl der Tabellenzeilen bestimmt werden.

Beispiel

Aus dem XML-Resultat einer Transformation eines ABAP-Datenobjekts in das asXML-Format wird ein iXML-Eingabestrom erzeugt und dieser wieder zurück transformiert.

CALL TRANSFORMATION id SOURCE text = `Hello XML!`
                       RESULT XML DATA(xml_string).

DATA(ixml) = cl_ixml=>create( ).
DATA(stream_factory) = ixml->create_stream_factory( ).
DATA(istream)        = stream_factory->create_istream_xstring( xml_string ).

DATA  result TYPE string.
CALL TRANSFORMATION id SOURCE XML istream
                       RESULT text = result.

XML-Dokumente

Jedes im Speicher in DOM-Darstellung abgelegte XML-Dokument wird über ein eigenes Objekt verwaltet. Ein solches Objekt kann wie folgt erzeugt werden:

DATA(ixml) = cl_ixml=>create( ).
...
DATA(document)       = ixml->create_document( ).

Der statische Typ der Referenzvariable stream_factory ist dann IF_IXML_DOCUMENT. Ein solcherart erzeugtes Dokument

  • wird verwendet, um ein als DOM abgelegte XML-Dokument zu adressieren,
  • kann an den Parser angebunden werden, um es zu füllen,
  • kann verwendet werden, um neue XML-Daten aufzubauen oder vorhandene zu modifizieren,
  • kann an den Renderer übergeben werden, um es auszugeben.

Hinweis

iXML-Dokumente können als XML-Ziel, iXML-Dokumente und deren Knoten können als XML-Quelle für mit CALL TRANSFORMATION aufgerufene XSL-Transformationen angegeben werden.

Beispiel

Ein Dokument wird erzeugt und als XML-Ziel einer XSL-Transformation verwendet. Das gefüllte Dokument wird dann einem Renderer übergeben, an den gleichzeitig ein Ausgabestrom für eine Zeichenkette angebunden wird, und gerendert. Danach enthält die Zeichenkette die zeichenartige Darstellung der XML-Daten.

DATA(ixml)     = cl_ixml=>create( ).
DATA(document)       = ixml->create_document( ).

CALL TRANSFORMATION id SOURCE text = `Hello XML!`
                       RESULT XML document.

DATA xml_string TYPE string.
ixml->create_renderer( document = document
                       ostream  = ixml->create_stream_factory(
                                    )->create_ostream_cstring(
                                         string = xml_string )
                                           )->render( ).






Fill RESBD Structure from EBP Component Structure   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6098 Date: 20240523 Time: 171459     sap01-206 ( 65 ms )