XML naar CSV (comma seperated) hulp gevraagd
graag zou ik advies ontvangen voor het volgende. Kom er namelijk niet helemaal uit.
Bron van het XML bestand is: http://www.europespares.com/1555.xml
voorbeeld inhoud:
======================================
<Products>
<Product>
<TitelA><![CDATA[E-NP01050046]]></TitelA>
<TitelB><![CDATA[4200025089998]]></TitelB>
<TitelC>Nieuw</TitelC>
<TitelD>18</TitelD>
<TitelE>5,05</TitelE>
<TitelF>24</TitelF>
<TitelG><![CDATA[Apple iPhone 3G / 3GS Speaker/Microfoon Rooster |]]></TitelG>
<TitelH>nee</TitelH>
<TitelI><![CDATA[Apple iPhone 3G / 3GS Speaker/Microfoon Rooster |]]></TitelI>
</Product>
<Product>
<TitelA><![CDATA[4936399161816]]></TitelA>
<TitelB><![CDATA[4200022487445]]></TitelB>
<TitelC>Nieuw</TitelC>
<TitelD>41</TitelD>
<TitelE>5,09</TitelE>
<TitelF>24</TitelF>
<TitelG><![CDATA[Connector zit los, naar binnen geschoten, géén connectie met simkaart.]]></TitelG>
<TitelH>nee</TitelH>
<TitelI><![CDATA[Apple iPhone 3G / 3GS Simkaartlezer Connector|]]></TitelI>
</Product>
<Product>
<TitelA><![CDATA[5912809073923]]></TitelA>
<TitelB><![CDATA[4200021606076]]></TitelB>
<TitelC>Nieuw</TitelC>
<TitelD>2</TitelD>
<TitelE>5,09</TitelE>
<TitelF>24</TitelF>
<TitelG><![CDATA[Toestel gaat niet meer aan of uit, powerknop, aan/uit schakelaar doet het niet.]]></TitelG>
<TitelH>nee</TitelH>
<TitelI><![CDATA[Nokia X6 Aan/Uit Knop Schakelaar | 2/11]]></TitelI>
</Product>
<Product>
<TitelA><![CDATA[E-NP01050032]]></TitelA>
<TitelB><![CDATA[4200036765515]]></TitelB>
<TitelC>Nieuw</TitelC>
<TitelD>50</TitelD>
<TitelE>5,09</TitelE>
<TitelF>24</TitelF>
<TitelG><![CDATA[Hulp nodig bij het er uit halen van uw simkaart? Gebruik deze opening tool om uw simkaart uit uw toestel te pakken.]]></TitelG>
<TitelH>nee</TitelH>
<TitelI><![CDATA[Apple iPhone Eject Pin Openings Tool Zilver | 1/9]]></TitelI>
</Product>
</Products>
======================================
Wat het uiteindelijk moet worden is een csv bestand die er zo uitziet:
======================================
TitelA,TitelB,TitelC,TitelD,TitelE,TitelF,TitelG,TitelH,TitelI
E-NP01050046,4200025089998,Nieuw,18,"5,05",24,Apple iPhone 3G / 3GS Speaker/Microfoon Rooster |,nee,Apple iPhone 3G / 3GS Speaker/Microfoon Rooster |
4936399161816,4200022487445,Nieuw,41,"5,09",24,"Connector zit los, naar binnen geschoten, géén connectie met simkaart.",nee,Apple iPhone 3G / 3GS Simkaartlezer Connector|
5912809073923,4200021606076,Nieuw,2,"5,09",24,"Toestel gaat niet meer aan of uit, powerknop, aan/uit schakelaar doet het niet.",nee,Nokia X6 Aan/Uit Knop Schakelaar | 2/11
E-NP01050032,4200036765515,Nieuw,50,"5,09",24,Hulp nodig bij het er uit halen van uw simkaart? Gebruik deze opening tool om uw simkaart uit uw toestel te pakken.,nee,Apple iPhone Eject Pin Openings Tool Zilver | 1/9
======================================
Ik heb de basis script gebruikt om xml te lezen en op te slaan als csv. Voor het gemak heb ik de bron xml opgeslagen in een map waar de script ook zit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$filexml='1555.xml';
if (file_exists($filexml)) {
echo 'File Exists';
$xml = simplexml_load_file($filexml);
$f = fopen('1555.csv', 'w');
foreach ($xml->Item as $item) {
fputcsv($f, get_object_vars($item),',','"');
}
fclose($f);
}
?>
$filexml='1555.xml';
if (file_exists($filexml)) {
echo 'File Exists';
$xml = simplexml_load_file($filexml);
$f = fopen('1555.csv', 'w');
foreach ($xml->Item as $item) {
fputcsv($f, get_object_vars($item),',','"');
}
fclose($f);
}
?>
======================================
Maar verder kom ik niet om het gewenste resultaat te krijgen.
Wie kan mij helpen?
Alvast bedankt.
Door even simplexml_load_file in te typen in google kom je snel op de juiste pagina van php.net.
Kijk je dan bij de Return Values dan zie je dat de functie FALSE teruggeeft als er iets fout gaat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$filexml='1555.xml';
if (file_exists($filexml)) {
echo 'File Exists';
$xml = simplexml_load_file($filexml);
if($xml === FALSE)
die('XML bestand kon niet gelezen worden!');
$f = fopen('1555.csv', 'w');
foreach ($xml->Item as $item) {
fputcsv($f, get_object_vars($item),',','"');
}
fclose($f);
}
?>
$filexml='1555.xml';
if (file_exists($filexml)) {
echo 'File Exists';
$xml = simplexml_load_file($filexml);
if($xml === FALSE)
die('XML bestand kon niet gelezen worden!');
$f = fopen('1555.csv', 'w');
foreach ($xml->Item as $item) {
fputcsv($f, get_object_vars($item),',','"');
}
fclose($f);
}
?>
Hetzelfde mag je nog even doen voor fopen().
Verder: heb je PHP foutmeldingen aanstaan?
en krijg je wel een nieuw bestand 1555.csv? Wat staat er in?
ik heb het gedaan. Wat er nu gebeurt is dat er een csv wordt gemaakt maar dan helemaal leeg.
Bij erros zie ik eigenlijk niets staan dat er wat fout gaat.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
foreach ($xml->Product as $product) {
fputcsv($f, get_object_vars($product),',','"');
}
?>
foreach ($xml->Product as $product) {
fputcsv($f, get_object_vars($product),',','"');
}
?>
je hebt namelijk geen <Item> </Item> in je XML maar wel <Product> </Product>
ik ben er bijna! Dank je wel. Ik mis nu enkel de titelnamen van de eerste rij.
E-NP01050046,4200025089998,Nieuw,18,"5,05",24,"Apple iPhone 3G / 3GS Speaker/Microfoon Rooster |",nee,"Apple iPhone 3G / 3GS Speaker/Microfoon Rooster |"
4936399161816,4200022487445,Nieuw,41,"5,09",24,"Connector zit los, naar binnen geschoten, géén connectie met simkaart.",nee,"Apple iPhone 3G / 3GS Simkaartlezer Connector|"
5912809073923,4200021606076,Nieuw,2,"5,09",24,"Toestel gaat niet meer aan of uit, powerknop, aan/uit schakelaar doet het niet.",nee,"Nokia X6 Aan/Uit Knop Schakelaar | 2/11"
E-NP01050032,4200036765515,Nieuw,50,"5,09",24,"Hulp nodig bij het er uit halen van uw simkaart? Gebruik deze opening tool om uw simkaart uit uw toestel te pakken.",nee,"Apple iPhone Eject Pin Openings Tool Zilver | 1/9"
hoe zou dit erbij kunnen komen?
Kun je nog even je code posten? En ik zie veel titles.. (TitelA, TitleB..) welke mis je?
in de tussentijd was ik even gaan stoeien en het is gelukt.
Bedankt voor je hulp nog.
Kleine moeite en graag gedaan.