Hallo Liebes Forum,
ich lade mir per FTPDownlaod eine XML Datei herunter, die ca. diesen Aufbau hat:
<PRODUKTE>
<ARTIKEL>
<NAME>xxx</NAME>
...
<ATTRIBUT>
<NAME>XX</NAME>
<ATTRIBUT>xxx</ATTRIBUT>
</ATTRIBUT>
<ATTRIBUT>
<NAME>XX</NAME>
<ATTRIBUT>xxx</ATTRIBUT>
</ATTRIBUT>
<ATTRIBUT>
<NAME>XX</NAME>
<ATTRIBUT>xxx</ATTRIBUT>
</ATTRIBUT>
</ARTIKEL>
<ARTIKEL>
...
</ARTIKEL>
</PRODUKTE>
Über folgendes transformationTempalte lasse ich mir das Spreadsheet generieren:
<#assign row = target.addRow()>
<#list xml["PRODUKTE"]["ARTIKEL"] as article>
<#assign row = target.addRow()>
${addColumns(row, article)}
</#list>
Bis jetzt funktioniert alles gut, mit einer Ausnahme. Und zwar wird mir im Spreadsheet in der Spalte „ARTIKEL_ATTRIBUT“ nur der Inhalt des letzten Attributs angezeigt mit den XML Tags außen rum.
Ich habe bereits recherchiert und hier einen Beitrag gefunden, dessen Lösung alle Kindelement des als eigene Spalte anlegt. Dadurch sieht mein Template dann so aus:
<#assign row = target.addRow()>
<#list xml["PRODUKTE"]["ARTIKEL"] as article>
<#assign row = target.addRow()>
<#list article["ATTRIBUT"] as t>
${row.addCol("ATT_NAME_" + t?index, t["NAME"])}
${row.addCol("ATT_WERT_" + t?index, t["ATTRIBUT"])}
</#list>
${addColumns(row, article, '', {'columns':['ATTRIBUT'], 'mode':'exclude'})}
</#list>
Dadurch legt er mir dann je Attribute 2 Spalten an mit einer Indexierung.
Allerdings würde ich gerne nur eine Spalte „Attribute“ haben, die den Inhalt ungefähr so ausgibt:
{attribut_name, attribut_attribut},{attribut_name, attribut_attribut}...
Die Ausgabe muss nicht genauso sein, wichtig ist mir nur, dass alle Attribute in einer Spalte stehen und man die zusammengehörigen Werte erkennt.
Gibt es hier eine Funktion a la „updateCol“ oder eine erstmal leere Spalte zu erstellen und dann Werte hinzuzufügen? Oder auch gerne eine andere Alternative.
Beste Grüße,
Franziska