Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Beispiel 2 - XML - Komplexe Struktur mit Attributen und Referenzelementen

Quelle: https://support.synesty.com/de/support/discussions/topics/11000032039


Anforderung:

Ich habe eine Artikeldatei, die in einem XML Abschnitt Artikel mit Varianten enthält. Nach diesem Schema sind die Artikel mit Eigenschaften der Varianten in Unterabschnitten enthalten.
Es soll für jeden GrIndex eine Zeile geschrieben werden.

Code Block
<Artikeldaten>
		<Artikel Aktiv=1>"1">
			<ArtikelNr>123456</ArtikelNr>
                        <ArtikelName>Toller Artikel</ArtikelName>
<VKPreise>
    <VKPreis GrIndex="6" Waehrung="EUR" VK1="34,95" VK2="0,00" VK3="0,00>3400">34,95</VKPreis>
    <VKPreis GrIndex="7" Waehrung="EUR" VK1="34,95" VK2="0,00" VK3="0,00>3400">34,95</VKPreis>
</VKPreise>
<Bestaende>
   <Bestand GrIndex=6>2<"6">2</Bestand>
   <Bestand GrIndex=7>8<"7">8</Bestand>
</Bestaende>
<BestaendeDetails>
				<BestaendeDetail Filiale="001" GLN="4399902192156">
					<Bestand GrIndex="6">1</Bestand>
					<Bestand GrIndex="7">1</Bestand>
				</BestaendeDetail>
				<BestaendeDetail Filiale="002" GLN="4399902347143">
					<Bestand GrIndex="6">1</Bestand>
					<Bestand GrIndex="7">1</Bestand>
				</BestaendeDetail>
				<BestaendeDetail Filiale="003" GLN="4399902347136">
					<Bestand GrIndex="6">0</Bestand>
					<Bestand GrIndex="7">6</Bestand>
				</BestaendeDetail>
			</BestaendeDetails>
<EAN_Codes>
	<EAN GrIndex="6" />
	<EAN GrIndex=7>8023121212111<"7">8023121212111</EAN>
</EAN_Codes>
</Artikel>

</Artikeldaten>

...

Code Block
<#assign row = target.addRow()>
<#list xml["Artikeldaten"]["Artikel"] as art>
  <#assign row = target.addRow()>
  ${addColumns(row, art)}
 <#list art['VKPreise']["VKPreis"] as vkp>
    <#assign vkprow = target.addRow()>
    ${vkprow.addCol("VKPreis", vkp)}
    ${vkprow.addCol("GrIndex", attr("GrIndex", vkp)!)}  
    ${vkprow.addCol("VK1", attr("VK1", vkp)!)}

    <#-- now the difficult part: getting the stock and EAN for each GrIndex -->
    ${vkprow.addCol("Bestand", art['Bestaende']['Bestand']?filter(bestand -> attr("GrIndex", bestand)! == attr("GrIndex", vkp)!)?first!)}
    ${vkprow.addCol("EANCode", art['EAN_Codes']['EAN']?filter(ean -> attr("GrIndex", ean)! == attr("GrIndex", vkp)!)?first!)}

    <#list art["BestaendeDetails"]["BestaendeDetail"] as bestandDetail>
      <#list bestandDetail["Bestand"] as bestand>
         <#if attr("GrIndex", bestand)! == attr("GrIndex", vkp)>
           ${vkprow.addCol("Bestand_Filiale_"+attr("Filiale", bestandDetail), bestand!)}
        </#if>
      </#list>
    </#list>

  </#list>
</#list>


Ergebnis

Image RemovedImage Added


Weitere Informationen

...