$addColumns Methode bei SOAP-API

Moin @Synesty,

ich habe gerade einen Interessanten Fall bei dem ich über eine SOAP API Daten einspiele und gerade habe ich ein kleines Problem, da die Felder in dem Objekt alle sich nur über die ID unterscheiden und ich nirgends eine Doku finde, wie ich auf dieses Feld zugreife.

Hier ein Beispiel:
<dooobj:row id=„17132342_1“ owner=„false“ contentAccess=„true“>
<dooobj:column id=„ob3.global.changeDate“>123123123</dooobj:column>
<dooobj:column id=„ob3.global.creationDate“>2312312312</dooobj:column>
</dooobj:row>

Aktuell iteriert der Step über alle Rows benennt aber die Spalte immer „dooobj:column“, wodurch die vorherigen Spalten alle ignoriert werden und pro Row-Objekt immer nur eine Spalte im Mapper auftaucht.

Deswegen würde ich gerne die Spalten über die ID benennen. Wie soll ich das machen?

<#ftl ns_prefixes={…}>
<#assign row = target.addRow()>
<#list xml[„dooobj:row“] as item>
<#assign row = target.addRow()>
${addColumns(row, item, „“, {„autoExpand“: „asColumns“})}
</#list>

VG
René

Hallo René,

mit der addColumns Funktion wird das vermutlich nicht funktionieren. Du könntest aber zwei verschachtelte <#list> Anweisungen verwenden, um die Spalten mit dem Wert des id-Attributs als Titel auszugeben:

<#ftl ns_prefixes={"dooobj":"x"}>
<#assign row = target.addRow()>
<#list xml["dooobj:row"] as item>
  <#assign row = target.addRow()>
  <#list item['dooobj:column'] as column>
     ${row.addCol( attr("id",column), column!)}
  </#list>
</#list>

Das Ergebnis sollte dann so aussehen:

Viele Grüße
Torsten

1 Like