XML bestimmte Positionen

Hallo zusammen,

Ich erstelle über ein Spreadsheet und anschließendem Multiwriter eine XML , die ich anschließend wieder in mehrere XMLs aufteile um Aufträge zu übergeben.

Was mir noch fehlt ist, dass ich die Positionen des Spreadsheets nicht in jeder Datei habe, sondern, dass über die Order-ID auch nur die Positionsdaten der jeweiligen Bestellung nachher auch in der jeweiligen Datei zu finden sind.

Kann mir hier jemand einen Tip geben?

VG

Moin,

hast du ein Beispiel?

So wie ich das verstehe möchtest du nur die Auftragspositionen des jeweiligen Auftrags drin haben, korrekt?

Dann solltest du die Auftragspositionen als Child-Datastore in Parent (Auftragskopf) speichern und über parent_identifier miteinander verknüpfen. Wenn du dann den XML Step benutzt kannst du auf die Children des Auftrags zugreifen.

VG
René Nowotny

Hi Rene,

aktuell löse ich alles ohne Datastore.

Vom prinzip soll nachher in jeder RG ( Spalte 3 gleiche Zeilen = 1x RG XML) die jeweiligen Position stehen. Wenn ich nur die Items über getrow nochmal jeweils in die XML einbaue dann bekomme ich immer alle Zeilen in jeder XML. Lasse ich es weg, habe ich nur eine Zeile in der XML wenn ich die XML über den Filesplitter splitte in die verschiedenen RG´s.

Irgendwie müssen die Positionen also pro RG in in der XML zwischen die ItemList. Anbei mal meine XML:

<#list output@SpreadsheetFilter_17.getRows() as row>

<#assign xmlfilecontent>

<?xml version="1.0" encoding="utf-8"?>
<INVOICE xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opentrans.org/XMLSchema/2.1" version="2.1">
	<INVOICE_HEADER>
		<CONTROL_INFO>
			<GENERATION_DATE>${row.get("GENERATION_DATE")!}</GENERATION_DATE>
		</CONTROL_INFO>
		<INVOICE_INFO>
			<INVOICE_ID>${row.get("INVOICE_ID")!}</INVOICE_ID>
			<INVOICE_DATE>${row.get("GENERATION_DATE")!}</INVOICE_DATE>
			<DELIVERYNOTE_ID>${row.get("DISPATCHNOTIFICATION_ID")!}</DELIVERYNOTE_ID>
			<DELIVERY_DATE>
				<DELIVERY_START_DATE>${row.get("DELIVERY_START_DATE")!}</DELIVERY_START_DATE>
				<DELIVERY_END_DATE>${row.get("DELIVERY_END_DATE")!}</DELIVERY_END_DATE>
			</DELIVERY_DATE>
			<PARTIES>
				<PARTY>
					<PARTY_ROLE>buyer</PARTY_ROLE>
					<ADDRESS>
						<NAME xmlns="http://www.bmecat.org/bmecat/2005">${row.get("NAME_RG")!}</NAME>
						<STREET xmlns="http://www.bmecat.org/bmecat/2005">${row.get("STREET_RG")!}</STREET>
						<ZIP xmlns="http://www.bmecat.org/bmecat/2005">${row.get("ZIP_RG")!}</ZIP>
						<CITY xmlns="http://www.bmecat.org/bmecat/2005">${row.get("CITY_RG")!}</CITY>
						<COUNTRY xmlns="http://www.bmecat.org/bmecat/2005">${row.get("COUNTRY_RG")!}</COUNTRY>
					</ADDRESS>
				</PARTY>
				<PARTY>
					<PARTY_ROLE>invoice_issuer</PARTY_ROLE>
					<ADDRESS>
						<NAME xmlns="http://www.bmecat.org/bmecat/2005"></NAME>
						<STREET xmlns="http://www.bmecat.org/bmecat/2005"></STREET>
						<ZIP xmlns="http://www.bmecat.org/bmecat/2005"></ZIP>
						<CITY xmlns="http://www.bmecat.org/bmecat/2005"></CITY>
						<COUNTRY xmlns="http://www.bmecat.org/bmecat/2005">Schweiz</COUNTRY>
						<VAT_ID xmlns="http://www.bmecat.org/bmecat/2005"></VAT_ID>
					</ADDRESS>
				</PARTY>
				<PARTY>
					<PARTY_ROLE>delivery</PARTY_ROLE>
					<ADDRESS>
						<NAME xmlns="http://www.bmecat.org/bmecat/2005">${row.get("NAME")!}</NAME>
						<NAME2 xmlns="http://www.bmecat.org/bmecat/2005">${row.get("NAME2")!}</NAME2>
						<CONTACT_DETAILS>
							<FIRST_NAME xmlns="http://www.bmecat.org/bmecat/2005">${row.get("FIRST_NAME")!}</FIRST_NAME>
							<CONTACT_NAME xmlns="http://www.bmecat.org/bmecat/2005">${row.get("CONTACT_NAME")!}</CONTACT_NAME>
						</CONTACT_DETAILS>
						<STREET xmlns="http://www.bmecat.org/bmecat/2005">${row.get("STREET")!}</STREET>
						<ZIP xmlns="http://www.bmecat.org/bmecat/2005">${row.get("ZIP")!}</ZIP>
						<CITY xmlns="http://www.bmecat.org/bmecat/2005">${row.get("CITY")!}</CITY>
						<COUNTRY xmlns="http://www.bmecat.org/bmecat/2005">${row.get("COUNTRY")!}</COUNTRY>
					</ADDRESS>
				</PARTY>
			</PARTIES>
			<CURRENCY xmlns="http://www.bmecat.org/bmecat/2005">${row.get("CURRENCY")!}</CURRENCY>
		</INVOICE_INFO>
		<ORDER_HISTORY>
			<ORDER_ID>${row.get("ORDER_ID")!}</ORDER_ID>
			<SUPPLIER_ORDER_ID>${row.get("SUPPLIER_ORDER_ID")!}</SUPPLIER_ORDER_ID>
		</ORDER_HISTORY>
	</INVOICE_HEADER>
	<INVOICE_ITEM_LIST>
                        
		<INVOICE_ITEM>
			<PRODUCT_ID>
				<SUPPLIER_PID xmlns="http://www.bmecat.org/bmecat/2005">${row.get("SUPPLIER_PID")!}</SUPPLIER_PID>
				<INTERNATIONAL_PID xmlns="http://www.bmecat.org/bmecat/2005">${row.get("INTERNATIONAL_PID")!}</INTERNATIONAL_PID>
			</PRODUCT_ID>
			<QUANTITY>${row.get("QUANTITY")!}</QUANTITY>
			<PRODUCT_PRICE_FIX>
				<PRICE_AMOUNT xmlns="http://www.bmecat.org/bmecat/2005">${row.get("PRICE_AMOUNT")!}</PRICE_AMOUNT>
				<TAX_DETAILS_FIX>
					<TAX xmlns="http://www.bmecat.org/bmecat/2005">${row.get("TAX")!}</TAX>
					<TAX_AMOUNT>${row.get("TAX_AMOUNT")!}</TAX_AMOUNT>
				</TAX_DETAILS_FIX>
			</PRODUCT_PRICE_FIX>
			<PRICE_LINE_AMOUNT>${row.get("PRICE_LINE_AMOUNT")!}</PRICE_LINE_AMOUNT>
			<ORDER_REFERENCE>
				<ORDER_ID>${row.get("ORDER_ID")!}</ORDER_ID>
			</ORDER_REFERENCE>
			<DELIVERY_REFERENCE>
				<DELIVERYNOTE_ID>${row.get("DISPATCHNOTIFICATION_ID")!}</DELIVERYNOTE_ID>
				<DELIVERY_DATE>
					<DELIVERY_START_DATE>${row.get("DELIVERY_START_DATE")!}</DELIVERY_START_DATE>
					<DELIVERY_END_DATE>${row.get("DELIVERY_END_DATE")!}</DELIVERY_END_DATE>
				</DELIVERY_DATE>
			</DELIVERY_REFERENCE>
		</INVOICE_ITEM>
                                 
	</INVOICE_ITEM_LIST>
	<INVOICE_SUMMARY>
		<NET_VALUE_GOODS>${row.get("NET_VALUE_GOODS")!}</NET_VALUE_GOODS>
		<TOTAL_AMOUNT>${row.get("TOTAL_AMOUNT")!}</TOTAL_AMOUNT>
		<TOTAL_TAX>
			<TAX_DETAILS_FIX>
				<TAX xmlns="http://www.bmecat.org/bmecat/2005">${row.get("TAX")!}</TAX>
				<TAX_AMOUNT>${row.get("TAX_AMOUNT")!}</TAX_AMOUNT>
			</TAX_DETAILS_FIX>
		</TOTAL_TAX>
	</INVOICE_SUMMARY>
</INVOICE>
</#assign>
<#assign xmlfilename = "GINVO_5503942_"+row.get("ORDER_ID")+"_"+row.get("Origin")+.now?string('_yyyyMMddHHmm') + ".xml" />
 ${output(xmlfilecontent, xmlfilename, "UTF-8")}
</#list>

Moin,

da du hier einen Aufbau mit Kopf-Daten, welche nur einmal vorkommen, und mit Artikeldaten, welche pro Bestellung mehrfach vorkommen, solltest du diese Daten in einem Datastore speichern mit Parent-Child Beziehung. Das ist inklusive von Synesty und macht es erheblich leichter mit den Daten umzugehen.

Danach kannst du die XML genauso aufbauen wie gewünscht.

Beste Grüße
René

Hi Rene,

mit welchem Befehl hole ich denn die Daten zurück in die XML?

VG
Enrico

Hallo Enrico,

entschuldige die späte Antwort.

Benutz den Step „TextHTMLWriter“ dafür.

LG
René

Hi Rene,

das mache ich ja sowie schon mit dem TextMultwriteroutput. Mir ist nur nicht ganz klar, wie ich die Werte einbaue, so dass ich immer die Parent/Child beziehung pro XML habe. Setzte ich davor noch einen „SearchdataStore“?

Hast du mir ein kurzes Beispiel für den „Get“?

VG

Hallo Enrico,

bei mir ist es die letzte Woche sehr turbulent gewesen.

Ein SearchDatastore Step sollte reichen. Vielleicht hast du es ja bis jetzt auch schon umgesetzt.

Falls du Unterstützung brauchst, kannst du mir gerne eine Privat-Nachricht schreiben.

LG
René