PHP-Array mit XSD in XML umwandeln und umgekehrt

aGeNET

Erfahrenes Mitglied
Moin,

leider ist das PHP-Manual in dieser Hinsicht etwas dürftig und scheinbar suche ich auch bei Google mit den falschen Begriffen nach einem Lösungsansatz.
Ich suche nach einer Möglichkeit ein PHP-Array mit XSD-Schemadateien in XML umzuwandeln. Anhand dieser XSD-Schemata soll es ebenso möglich sein XML wieder in ein PHP-Array umzuwandeln.
Für ein paar hilfreiche Links bzw. ein paar Beispiele zu dieser Thematik wäre ich Euch sehr dankbar.

Ziel des Ganzen ist es die Ex- und Import-Routinen eines Shopsystems zu vereinfachen bzw. flexibler zu gestalten. Als Shopbetreiber will man die shopinternen Daten zb. zu möglichst vielen Preissuchmaschinen exportieren um seinen Absatz zu erhöhen.
Ein weiterer Anlass ist die Anbindung an eine Warenwirtschaft.

Als Entwickler dieser Shopsoftware muss man für die nötige Vielfalt sorgen: mehrere Warenwirtschaften und möglichst viele Preisportale müssen unterstützt werden.
Bei einigen reicht ein simpler CSV-Ex-/Import aus, andere wiederum verstehen nur XML.

Um diese Anbindung(en) möglichst schnell und effizient umzusetzen, soll nicht mehr für jede neue Schnittstelle die ganze Datensammelprozedur von vorn geschrieben werden.
Dadurch müssen bei Anpassungen (sei es der Shopaufbau oder die Zielsysteme) jedes Mal dutzende Dateien geändert werden und jedes Mal muss man sich neu in die Programmlogik einarbeiten.

Es soll also eine einmalige Generierung der Daten stattfinden und diese Daten sollen dann in ein PHP-Array bzw. PHP-Objekt gespeichert werden. Diese Datenquelle soll dann mit Hilfe einer/mehrerer XSD-Schemadatei(en) zu XML umgewandelt werden, das dann in den Zielsystemen weiterverabeitet werden kann.

Kurzes Beispiel:
PHP:
$data = array(
	['orders']	=> array(
		'0'	=> array(
			'orders_id'			=> '1',
			'orders_customer_id'=> '5',
			'orders_date'		=> '2011-11-02',
			'orders_products'	=> array(
				'0' => array(
					'products_id'	=> '12',
					'products_name'	=> 'Testprodukt 1',
					'products_price'=> '24.95'
				),
				'1' => array(
					'products_id'	=> '3',
					'products_name'	=> 'Testprodukt 2',
					'products_price'=> '4.95'
				)
			)
		),
		'1' => array(
			'orders_id'			=> '2',
			'orders_customer_id'=> '117',
			'orders_date'		=> '2011-11-03',
			'orders_products'	=> array(
				'0' => array(
					'products_id'	=> '17',
					'products_name'	=> 'Testprodukt 8',
					'products_price'=> '1399.99'
				)
			)
		)
	)
);

Nun habe ich geplant, das PHP-Daten-Array/-Objekt mit Hilfe verschiedener XSD-Schemata ins XML-Format zu transformieren, aber jedes Zielsystem hat unterschiedliche Anforderungen an den Aufbau der zu verarbeitenden XML-Daten, beispielsweise:
Code:
<!-- XML Format 1: -->
<?xml version="1.0" encoding="UTF-8"?>
<orders>
	<order>
		<order_id>1</order_id>
		<order_customers_id>5</order_customers_id>
		<order_date>2011-11-02</order_date>
		<order_products>
			<order_product>
				<product_id>12</product_id>
				<product_name>Testprodukt 1</product_name>
				<product_price>24.95</product_price>
			</order_product>
			<order_product>
				<product_id>3</product_id>
				<product_name>Testprodukt 2</product_name>
				<product_price>4.95</product_price>
			</order_product>
		</order_products>
	</order>
	<order>
		<order_id>2</order_id>
		<order_customers_id>117</order_customers_id>
		<order_date>2011-11-03</order_date>
		<order_products>
			<order_product>
				<product_id>17</product_id>
				<product_name>Testprodukt 8</product_name>
				<product_price>1399.99</product_price>
			</order_product>
		</order_products>
	</order>
</orders>

<!-- XML Format 2: -->
<?xml version="1.0" encoding="UTF-8"?>
<orders>
	<order id="1" date="2011-11-02" customer="5">
		<products>
			<product id="12" name="Testprodukt 1" price="24.95" />
			<product id="3" name="Testprodukt 2" price="4.95" />
		</products>
	</order>
	<order id="2" date="2011-11-03" customer="117">
		<products>
			<product id="17" name="Testprodukt 8" price="1399.99" />
		</products>
	</order>
</orders>

Ich hoffe, das Ganze ist einigermaßen verständlich erklärt, so dass mir jemand weiterhelfen kann.
Vielen Dank im voraus.

mfg aGeNET
 
Hallo,
Ich glaube nicht, dass es mit XSD möglich ist direkt ein PHP-Array in ein XML-Dokument umzuschreiben. Ich würde es so machen, dass ich aus dem PHP-Array ein generisches XML baue und dieses XML dann den XSDs zur Verfügung stelle. Dann arbeiten alle Export-Systeme mit dem gleichen generischen XML.

z.B. à la http://snippets.dzone.com/posts/show/3391

PS:
Ich hoffe, das Ganze ist einigermaßen verständlich erklärt, so dass mir jemand weiterhelfen kann.
Ich glaube, wenn jede Frage so detailliert und präzise gestellt würde, dann könnte man sich viele, viele Nachfrage-/Verwirrungs-Posts sparen :D
 
Zuletzt bearbeitet:
Zurück