Ansicht
Dokumentation

ABENABAP_IXML_LIB_DOM_ITERAT_READ - ABAP IXML LIB DOM ITERAT READ

ABENABAP_IXML_LIB_DOM_ITERAT_READ - ABAP IXML LIB DOM ITERAT READ

rdisp/max_wprun_time - Maximum work process run time   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Lesen über Iteratoren

Im Abschnitt Direktes Lesen wird gezeigt, wie mit folgenden Objekten direkt auf die Knoten des DOM zugegriffen werden kann:

  • Objekte mit dem Interface IF_IXML_NODE für einzelne Knoten

Für jedes dieser Objekte kann ein Iterator erzeugt werden, der es erlaubt über die von den Objekten repräsentierten Elemente des DOM zu iterieren. Jeder Iterator bietet über sein Interface die gleichen Zugriffsmöglichkeiten auf die Objekte, über die er iteriert.

Hinweis

Die hier gezeigten Iteratoren sind Vorwärtsiteratoren, die von links nach rechts bzw. von oben nach unten iterieren. Die Interfaces der Objekte bieten zusätzlich auch die Möglichkeit, Rückwärtsiteratoren zu erzeugen, die von rechts nach links bzw. von unten nach oben iterieren.

Iterator für Knoten

Mit einer Referenzvariable document vom Typ IF_IXML_NODE, die auf ein XML-Dokument zeigt, kann wie folgt ein Iterator für die Knoten des gesamten Dokuments erzeugt werden:

DATA(iterator) = document->create_iterator( $[depth$] ).

Der statische Typ der Referenzvariable iterator ist dann IF_IXML_NODE_ITERATOR und sie zeigt auf den Iterator, mit dessen Methoden über die Knoten iteriert werden kann. Mit einem optionalen Eingabeparameter depth kann die Tiefe der Knoten in der Baumstruktur angegeben werden, über die iteriert werden soll. Um einen Iterator zu erzeugen, der nur über die Unterknoten eines bestimmten Knotens iteriert, kann statt document eine Referenzvariable node vom Typ IF_IXML_NODE, die auf ein Knotenobjekt zeigt, verwendet werden.

Folgende Methode des Iterators iteriert über seine Knoten:

DATA(node) = iterator->get_next( ).

Der statische Typ der Referenzvariable node ist dann IF_IXML_NODE und sie zeigt auf das Objekt des aktuellen Knotens des Iterators. Wenn keine Knoten mehr vorhanden sind, ist node initial.

Hinweise

  • Anders als beim direkten Lesen eines Knotens, welches auf die Elemente der repräsentierten XML-Daten beschränkt werden kann, erfasst ein Iterator alle Knoten des XML-Dokuments, die auch reine Strukturinformationen umfassen. Um die Art eines Knoten zu identifizieren kann mit der Methode GET_TYPE des Interface IF_IXML_NODE der Knotentyp ausgelesen und mit Konstanten dieses Interfaces verglichen werden. Filter oder Downcasts bieten weitere Möglichkeiten, nur ausgesuchte Knoten zu selektieren.
  • Neben dem hier gezeigten Iterator für Unterknoten gibt es auch einen Inline-Iterator mit dem Interface IF_IXML_INLINE_ITERATOR zum iterieren über benachbarte Knoten.

Iterator für Knoten

Iteratoren für Listen

Für jede der unter Direktes Lesen aufgeführten Listen

  • Knotenliste (IF_IXML_NODE_LIST)
  • Elementliste (IF_IXML_NODE_COLLECTION)
  • Attributliste (IF_IXML_NAMED_NODE_MAP)
DATA(iterator) = nodes$|elements$|attributes->create_iterator( ).

Die Referenzvariablen hat dann in allen drei Fällen den statischen Typ IF_IXML_NODE_ITERATOR und zeigt auf einen Iterator für die Elemente der jeweiligen Liste, der wie oben gezeigt verwendet werden kann.

Hinweis

Da die Listen nur die benötigten Elemente enthalten, ist in der Regel keine Abfrage auf den Typ notwendig, wie bei der Iteration über das gesamte Dokument bzw. Teilbäume.






PERFORM Short Reference   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5746 Date: 20240523 Time: 173742     sap01-206 ( 77 ms )