XML naar CSV (comma seperated) hulp gevraagd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Serkan Serin

Serkan Serin

05/12/2014 11:48:09
Quote Anchor link
Beste mensen,

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:
======================================
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0" encoding="UTF-8"?>

<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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

?>

======================================

Maar verder kom ik niet om het gewenste resultaat te krijgen.

Wie kan mij helpen?

Alvast bedankt.
 
PHP hulp

PHP hulp

22/11/2024 09:55:05
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 12:08:54
Quote Anchor link
ik mis wat foutafhandeling. Bijv. Hoe weet je dat de xml wel juist ingeladen wordt met de functie simplexml_load_file()?

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

?>


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?
 
Serkan Serin

Serkan Serin

05/12/2014 14:58:08
Quote Anchor link
Hoi,

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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 15:17:40
Quote Anchor link
Ik denk dat je foreach iets moet worden als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
  foreach ($xml->Product as $product) {
        fputcsv($f, get_object_vars($product),',','"');
  }

?>


je hebt namelijk geen <Item> </Item> in je XML maar wel <Product> </Product>
 
Serkan Serin

Serkan Serin

05/12/2014 15:45:14
Quote Anchor link
Beste Frank,

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?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 17:06:35
Quote Anchor link
Kun je nog even je code posten? En ik zie veel titles.. (TitelA, TitleB..) welke mis je?
 
Serkan Serin

Serkan Serin

05/12/2014 17:16:32
Quote Anchor link
Hoi,

in de tussentijd was ik even gaan stoeien en het is gelukt.

Bedankt voor je hulp nog.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 17:23:42
Quote Anchor link
Kleine moeite en graag gedaan.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.