Show TOC Anfang des Inhaltsbereichs

Syntaxdokumentation Überspringen von XML-Elementen bei der Deserialisierung  Dokument im Navigationsbaum lokalisieren

Der folgende Befehl erlaubt es, XML-Elemente bei der Deserialisierung zu überspringen.

 

<tt:skip [name="name"] [count="cnt"]/>

 

Der Befehl tt:skip kann an beliebiger Stelle eines Templates stehen.

 

Serialisierung

Bei der Serialisierung hat tt:skip keine Wirkung.

 

Deserialisierung

Bei der Deserialisierung hat tt:skip folgende Wirkung:

 

 

Der tt:skip-Befehl wird bei der Deserialisierung beim Abgleich des Templates mit der Struktur des XML-Eingangsstroms so abgeglichen, als ob an seiner Stelle die übersprungenen Elemente aufgeführt sind. D.h. ein tt:skip-Befehl mit dem Attribut name ist nur korrekt, wenn an dieser Stelle des XML-Eingangsstroms auch entsprechend viel Elemente des angegebenen Namens stehen und das nach einem tt:skip-Befehl aufgeführte Element des Templates muss zu dem Element des XML-Dokuments passen, das den übersprungenen Elementen folgt.

 

Beispiel

In der folgenden Simple Transformation ist das Template in Teile für Serialisierung und Deserialisierung aufgeteilt. Bei der Deserialisierung werden die ersten zwei X1-Elemente, alle X2-Elemente hinter dem ersten X2-Element und das Y-Element inklusive seiner Unterelemente übersprungen.

 

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

  <tt:root name="ROOT"/>

  <tt:template>
      <struc tt:ref="ROOT">
      <tt:serialize>
          <X1><tt:value ref="COL0" /></X1>
          <X1><tt:value ref="COL1" /></X1>
          <X1><tt:value ref="COL2" /></X1>
          <X2><tt:value ref="COL3" /></X2>
          <X2><tt:value ref="COL4" /></X2>
          <X2><tt:value ref="COL5" /></X2>
          <Y>
            <X3><tt:value ref="COL6" /></X3>
            <X3><tt:value ref="COL7" /></X3>
            <X3><tt:value ref="COL8" /></X3>
          </Y>
          <X4><tt:value ref="COL9" /></X4>
      </tt:serialize>
      <tt:deserialize>
        <tt:skip name="X1" count="2" />
        <X1><tt:value ref="COMPA" /></X1>
        <X2><tt:value ref="COMPB" /></X2>
        <tt:skip name="X2" count="*" />
        <tt:skip name="Y" count="1" />
        <X4><tt:value ref="COMPC" /></X4>
        <tt:skip />
      </tt:deserialize>
    </struc>
  </tt:template>

</tt:transform>

 

Das folgende ABAP-Programm kann die Transformation aufrufen:

 

DATA xml_string TYPE string.

DATA: BEGIN OF struc,
        col0 TYPE i VALUE 0,
        col1 TYPE i VALUE 1,
        col2 TYPE i VALUE 2,
        col3 TYPE i VALUE 3,
        col4 TYPE i VALUE 4,
        col5 TYPE i VALUE 5,
        col6 TYPE i VALUE 6,
        col7 TYPE i VALUE 7,
        col8 TYPE i VALUE 8,
        col9 TYPE i VALUE 9,
      END OF struc.

DATA: BEGIN OF result,
        compa TYPE i,
        compb TYPE i,
        compc TYPE i,
      END OF result.

CALL TRANSFORMATION ...
  SOURCE root = struc
  RESULT XML xml_string.

CALL TRANSFORMATION ...
  SOURCE XML xml_string
  RESULT root = result.

 

Nach der Deserialisierung enthalten die Komponenten von result die Werte der dritten, vierten und zehnten Komponente von struc.

 

Ende des Inhaltsbereichs