xml zu csv convertieren

fredolin

Erfahrenes Mitglied
Hey Leute,

hab da ein Problem. Im System einer WaWi werdenXML Files erstellt. Diese XML Files sollen zu CSV Files konvertiert werdenum dann in eine csv Schnittel für andere Server zu verfügung zustellen.

Aber ich finde keinen Ansatz bzw. das was ich habe, schreib nichts in die CSV Datei rein.

PHP:
$filename = 'test.csv';

$xmlfile = file($_FILES['xmlfile']['tmp_name']);

if(isset($_POST('submit')){
   $xml = simpelxml_load_file($xmlfiles);
   $f = fopen($filename, 'w');
   createCsv($xml, $f);
   fclose($f);

}

function createCsv($xml, $f){
   foreach($xml AS $item){
       $hashChild = (count($item->children()) > 0) ? true:false;
       if(!hashChild){
            $put_arr = array($item->getName(), $item);
            fputcsv($f, $put_arr, ";" " ");
       } else {
            createCsv($item, $f);
       }
   }
}
<!-- Hier ist normales HTML //-->
<form action="<?php $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data" method="post">
<input type="file" name="xmlfile" />
<input type="submit" name="submit" value="XML->CSV"/>

</form>

Ja das habed ich nun soweit mit hilfe google gefunden. Aber es wird nichts in die CSV Datein hinein geschrieben. Auch den Schreibschutz habe ich raus. Nun sehe ich nicht mehr den Baum vor lauter Wälder nicht mehr. Hilfe

Gruß fredolin
 
Aber ich finde keinen Ansatz bzw. das was ich habe, schreib nichts in die CSV Datei rein.

In deinem Code sind zig Syntaxfehler. Die würde ich erst mal beheben. Du begrenzt möglicherweise[1] nicht mal den PHP-Abschnitt korrekt (<?php … ?>).

Leute, echt… Da wundert ihr euch, wenn irgendwas nicht läuft? :(

- Parse Error: http://phpforum.de/forum/showthread.php?t=240642
- Debuggen: http://phpforum.de/forum/showthread.php?t=231095, http://php-de.github.io/jumpto/leitfaden/
- PHP_SELF: http://phpforum.de/forum/showthread.php?t=248916, http://blog.oncode.info/2008/05/07/php_self-ist-boese-potentielles-cross-site-scripting-xss/
- Grundlagen: http://phpforum.de/forum/showthread.php?t=239046, http://php-de.github.io/jumpto/grundlagen-quellen/



1: „Möglicherweise“ wie in „vielleicht ist der gezeigte Codeausschnitt nur sehr ungeschickt zusammenkopiert“. Das ist benefit of the doubt. :)
 
Zuletzt bearbeitet:
Hallo mermshaus,

erstmal danke für deine antwort. das was ich hier gepostet habe sind nur auszüge aus dem quellcode. ich habe schion die Tags <?php und ?> in meinen Code gesetzt.

Ich bekomme auch ne Fehlermeldung, die ich vergessen habe hier mit rein zu schreiben. Es sei mir bitte verziehn, da ich das gestern abend kurz vorm bettchen gehen ein gegeben habe. (Merke: Man soll sich Zeit nehmen)..:)

O.K hier nun mal meine Fehlermeldung die ich bekomme

HTML:
Warning: simplexml_load_file() expects parameter 1 to be string, array given in D:\webserver\htdocs\www.xmltocms.local\index03.php on line 23

Warning: Invalid argument supplied for foreach() in D:\webserver\htdocs\www.xmltocms.local\index03.php on line 31

So bitte verzeiht mir meinen Fehler und ich hoffe das ich nun hier Hilfe oder denkansetze bekomme.

Gruß fredolin
 
So ich mach hier nun mal alleine weiter. Hab den Fehler gefunden und benötige nun nur noch technische Hilfestellung für einen code-schnipsel

ich schreibe auch nur den code-schnipsel hier rein

PHP:
$hasChild = (count($item->children()) > 0) ? true:false;  //<- Hilfe was in dieser Zeile gemacht wird
if(!$hasChild) {
	$put_arr = array($item->getName(), $item); // <-- Was passiert hier in diesem Schritt ab der if schliefe beginnen
	fputcsv($f, $put_arr, ";", " ");	
} else {
	createCSV($item, $f);	
}


Ich hoffe das ich da Hilfe benötige. Wenn ich hier eine große XML Datei auswähle, dann schreibt dieses Tool alles hintereinander weg in die CSV Datei rein.

Hier mal einen kurzen Einblick der XML Datei

XML:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by xxxxddwsw (http://www.xxxtestxxx.de) -->
<!DOCTYPE ABC SYSTEM "xxxxx.dtd"
[
	<!ENTITY % USERDEFINES "(UDX.FxxxxER.KAT_BESCHREIBUNG?,UDX.FxxxxER.PREISKENNZEICHEN?,UDX.EDXF.DISCOUNT_GROUP_MANUFACTURER?,UDX.FxxxxER.RABATTSTUFE?,UDX.EDXF.CUSTOMS_TARIFF_NUMBER?,UDX.EDXF.MANUFACTURER_ACRONYM?,UDX.EDXF.PACKING_WIDTH?,UDX.EDXF.PACKING_HEIGHT?,UDX.EDXF.PACKING_LENGTH?,UDX.EDXF.PACKING_WEIGHT?)">
	<!ELEMENT UDX.FxxxxER.KAT_BESCHREIBUNG (#PCDATA)>
	<!ELEMENT UDX.FxxxxER.PREISKENNZEICHEN (#PCDATA)>
	<!ELEMENT UDX.EDXF.DISCOUNT_GROUP_MANUFACTURER (#PCDATA)>
	<!ELEMENT UDX.FxxxxER.RABATTSTUFE (#PCDATA)>
	<!ELEMENT UDX.EDXF.CUSTOMS_TARIFF_NUMBER (#PCDATA)>
	<!ELEMENT UDX.EDXF.MANUFACTURER_ACRONYM (#PCDATA)>
	<!ELEMENT UDX.EDXF.PACKING_WIDTH (#PCDATA)>
	<!ELEMENT UDX.EDXF.PACKING_HEIGHT (#PCDATA)>
	<!ELEMENT UDX.EDXF.PACKING_LENGTH (#PCDATA)>
	<!ELEMENT UDX.EDXF.PACKING_WEIGHT (#PCDATA)>
]
>
<MYTEST version="1.2" xmlns="http://www.xxxxx.xx/myxml/1.2/xxxx_new_catalog">
	<HEADER>
		<GENERATOR_INFO>Created by XML-Generator Update_DB_V4.89.0 22.10.2012</GENERATOR_INFO>
		<CATALOG>
			<LANGUAGE>deu</LANGUAGE>
			<CATALOG_ID>FxxxxxER-7041515</CATALOG_ID>
			<CATALOG_VERSION>004.002</CATALOG_VERSION>
			<CATALOG_NAME>FxxxxxER-7041515</CATALOG_NAME>
			<DATETIME type="generation_date">
				<DATE>2013-11-18</DATE>
				<TIME>16:22:45</TIME>
			</DATETIME>
			<TERRITORY>DE</TERRITORY>
			<PRICE_FLAG type="incl_freight">FALSE</PRICE_FLAG>
			<PRICE_FLAG type="incl_packing">FALSE</PRICE_FLAG>
			<PRICE_FLAG type="incl_assurance">FALSE</PRICE_FLAG>
			<PRICE_FLAG type="incl_duty">FALSE</PRICE_FLAG>
		</CATALOG>
		<BUYER>
			<BUYER_ID type="supplier_specific">Buyer_ID</BUYER_ID>
			<BUYER_NAME>Buyer_Name</BUYER_NAME>
			<ADDRESS type="buyer">
			</ADDRESS>
		</BUYER>
		<SUPPLIER>
			<SUPPLIER_ID type="iln">4006209000007</SUPPLIER_ID>
			<SUPPLIER_NAME>xxxxUnternehmen GmbHxxxx</SUPPLIER_NAME>
			<ADDRESS type="supplier">
				<NAME>Mustermann Handels GmbH</NAME>
				<STREET>Musterweg 12-34</STREET>
				<ZIP>123456</ZIP>
				<CITY>Musterwerk</CITY>
				<COUNTRY>Musterland</COUNTRY>
				<PHONE>+49 (0)123459 0087</PHONE>
				<FAX>+49 (0) 12345 6678 988</FAX>
				<EMAIL>info@mustermann.mmm</EMAIL>
				<URL>www.mustermann.mmm</URL>
			</ADDRESS>
		</SUPPLIER>
	</HEADER>
	<T_NEW_CATALOG>
		<CLASSIFICATION_SYSTEM>
			<CLASSIFICATION_SYSTEM_NAME>NEW Online Catalogue international</CLASSIFICATION_SYSTEM_NAME>
			<CLASSIFICATION_SYSTEM_FULLNAME>J</CLASSIFICATION_SYSTEM_FULLNAME>
			<CLASSIFICATION_SYSTEM_VERSION>J</CLASSIFICATION_SYSTEM_VERSION>
			<CLASSIFICATION_GROUPS>
				<CLASSIFICATION_GROUP>
					<CLASSIFICATION_GROUP_ID>J</CLASSIFICATION_GROUP_ID>
					<CLASSIFICATION_GROUP_NAME>J</CLASSIFICATION_GROUP_NAME>
				</CLASSIFICATION_GROUP>
			</CLASSIFICATION_GROUPS>
		</CLASSIFICATION_SYSTEM>
		<CATALOG_GROUP_SYSTEM>
			<GROUP_SYSTEM_ID>MARKETINGSTRUKTUR</GROUP_SYSTEM_ID>
			<GROUP_SYSTEM_NAME>Marketingstruktur (externe Sicht)</GROUP_SYSTEM_NAME>
			<CATALOG_STRUCTURE type="root">
				<GROUP_ID>1</GROUP_ID>
				<GROUP_NAME>NEW Online Catalogue international</GROUP_NAME>
				<PARENT_ID>0</PARENT_ID>
			</CATALOG_STRUCTURE>
			<CATALOG_STRUCTURE type="node">
				<GROUP_ID>1000991378</GROUP_ID>
				<GROUP_NAME>Schwerlast-Befestigungen / Chemie</GROUP_NAME>
				<PARENT_ID>1</PARENT_ID>
				<MIME_INFO>
					<MIME>
						<MIME_TYPE>image/jpeg</MIME_TYPE>
						<MIME_SOURCE>PG_P_CHEMIE01_F_SALL_AIS_V1.jpg</MIME_SOURCE>
						<MIME_PURPOSE>normal</MIME_PURPOSE>
						<MIME_ORDER>3</MIME_ORDER>
					</MIME>
				</MIME_INFO>
			</CATALOG_STRUCTURE>

Das ist nur ein Teil und es wird auch richtig geschlossen. Aber da weiss ich nicht, wie ich es hin bekomme das in die csv Datei alle Angaben schön unter einander geschrieben wird. Wenn mir da jemand helfen kann wäre es schön.

Gruß
Fredolin
 
Zuletzt bearbeitet von einem Moderator:
Zurück