Ansicht
Dokumentation

ABENABAP_SXML_LIB_PARSE - ABAP SXML LIB PARSE

ABENABAP_SXML_LIB_PARSE - ABAP SXML LIB PARSE

Fill RESBD Structure from EBP Component Structure   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Parsen

Um XML-Daten mit der sXML-Bibliothek zu lesen oder einfach eine Syntaxprüfung durchzuführen, werden diese mit einem XML-Reader verknüpft und dessen Methoden verwendet. Ein solcher Reader ist validierend, d.h. ungültige XML-Daten führen zu einer Ausnahme. Er fasst die XML-Daten als eine hierarchische baumartige Struktur auf, in der jeder Token durch einen Knoten repräsentiert wird, der eindeutig einem Oberknoten zugeordnet werden kann (siehe W3C Information Set). Beispielsweise wird ein Element mit literalem Wert wie folgt aufgefasst:

|
|--CO_NT_ELEMENT_OPEN
|    |
|    |--CO_NT_VALUE
|
|--CO_NT_ELEMENT_CLOSE

Der Wert ist ein Unterknoten des Knotens, der die Öffnung des Elements darstellt. Die Namen der Knoten entsprechen hier den Konstanten des Interface IF_SXML_READER, die den Typ eines Knoten beschreiben. Die Attribute eines Elements spielen eine Sonderrolle. Sie sind dem Knoten mit dem Typ CO_NT_ELEMENT_OPEN als Liste zugeordnet und können über spezielle Methoden erreicht werden, wenn der Parser auf der Öffnung eines Elements steht.

Die Klassen und Interfaces der sXML-Bibliothek, die für das Parsen von XML-Daten zur Verfügung stehen, sind so organisiert, dass es für unterschiedliche Anforderungen eigene XML-Reader-Klassen gibt, die von einer abstrakten Oberklasse CL_SXML_READER erben. Die abstrakte Oberklasse enthält Implementierungen der von allen Readern benötigten Funktionalität und bindet das Interface IF_SXML_READER ein, das die Komponenten enthält, die alle Reader gemeinsam haben. Das Interface ermöglicht einen einheitlichen Zugang zu allen Readern. Wenn Zugriff auf spezielle Komponenten benötigt werden, die nicht im Interface deklariert sind, muss mit einem Downcast auf die entsprechende Klasse gearbeitet werden.

Die spezialisierten Reader-Klassen sind:

Reader dieser Klasse parsen XML-Daten in einem Bytestring.
Reader dieser Klasse parsen XML-Daten in einer internen Tabelle mit flachem byteartigen Zeilentyp.
Reader dieser Klasse parsen XML-Daten in einer Datei auf dem Hostrechner der aktuellen .
Reader dieser Klasse parsen XML-Daten eines HTTP-Service des ICF.
Reader dieser Klasse parsen XML-Daten die im XOP-Format vorliegen.

Die zu parsenden XML-Daten werden der Factory-Methode CREATE jedes Readers übergeben. Ein Reader erkennt selbst das Format und die Zeichendarstellung der Daten. Bis auf den XOP-Reader unterstützen die Reader alle Formate bis auf XOP. Der XOP-Reader unterstützt ausschließlich das XOP-Format. Angaben wie zur Normalisierung und zur Behandlung von Leerräumen können bei geeignetem Format der Factory-Methode übergeben werden.

Die Methoden des Interface IF_SXML_READER ermöglichen das serielle Parsen der übergebenen XML-Daten. Hierfür gibt es zwei prinzipielle Möglichkeiten:

Ein Reader kann nicht mehrfach für die gleichen oder andere XML-Daten verwendet werden. Die Leseposition eines Readers wird während des Parsens mit seinen Methoden gesteuert. Die mit einem Reader möglichen Aktionen hängen von der aktuellen Leseposition ab. Beispielsweise kann ein Reader, der am Ende der geparsten XML-Daten steht nicht mehr als XML-Quelle der Anweisung CALL TRANSFORMATION verwendet werden. Es gibt keine Methode, die den Reader in seinen Anfangszustand zurück setzt. Statt dessen kann ein neuer Reader erzeugt werden.

Hinweise

  • Der Parser der sXML-Bibliothek validiert strenger als der Parser der iXML-Bibliothek. Ein Namensraumpräfix muss im gleichen oder einem übergeordneten Element deklariert sein. Eine vorhergehende Deklaration in einem parallelen Element wird als Fehler erkannt.
  • Ein XML-Reader der sXML-Bibliothek kann als XML-Quelle der Anweisung CALL TRANSFORMATION angegeben werden . Dies ermöglicht es Transformationen direkt für alle von sXML-Readern unterstützten Quellen in allen unterstützten Formaten durchzuführen. Insbesondere können dadurch auch JSON-Daten direkt in ABAP-Datenobjekte konsumiert werden.
  • Die Methode SKIP_NODE, die beim Token-basierten und beim objektorientierten Parsen verwendet werden kann, bietet einfache Möglichkeiten, um einen Teilbaum oder den gesamten Baum auf Gültigkeit zu überprüfen oder in einen Writer zu kopieren, wobei das Format geändert werden kann.
  • Wenn Inhalte von Elementen oder Attributen die Notationen <, >, &, " oder ' enthalten, werden diese beim Parsen automatisch in die entsprechenden Zeichen umgesetzt.

Transformation aus XML-Reader






Vendor Master (General Section)   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7899 Date: 20240523 Time: 152729     sap01-206 ( 197 ms )