CSV naar XML

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Loran DP

Loran DP

12/06/2011 15:00:42
Quote Anchor link
Ik heb het volgende script:
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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
function csv2xml($file, $container = 'data', $rows = 'row')
{

        $r = "<{$container}>\n";
        $row = 0;
        $cols = 0;
        $titles = array();

        $handle = @fopen($file, 'r');
        if (!$handle) return $handle;

        while (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
        {

             if ($row > 0) $r .= "\t<{$rows}>\n";
             if (!$cols) $cols = count($data);
             for ($i = 0; $i < $cols; $i++)
             {

                  if ($row == 0)
                  {

                       $titles[$i] = $data[$i];
                       continue;
                  }


                  $r .= "\t\t<{$titles[$i]}>";
                  $r .= $data[$i];
                  $r .= "</{$titles[$i]}>\n";
             }

             if ($row > 0) $r .= "\t</{$rows}>\n";
             $row++;
        }

        fclose($handle);
        $r .= "</{$container}>";

        return $r;
}

$xml .= csv2xml('demo.csv', 'leden');
echo $xml;
?>

En dit CSV bestand: http://dl.dropbox.com/u/2512912/demo.csv

Maar ik krijg geen output, en ook geen error's...
Wat is er fout?
 
PHP hulp

PHP hulp

26/12/2024 22:13:32
 
Erik van de Locht

Erik van de Locht

12/06/2011 16:55:44
Quote Anchor link
Loran,
Ik heb het script even overgenomen op mijn eigen server en er een beetje mee gespeeld. Je gaat er van uit dat $data een array vormt (zie regel 20) maar dit is niet het geval.
Ik heb het volgende bovenaan in de while-lus gezet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<pre>';
print_r($data);
echo '</pre>';
?>


Dan zie je dat je niet met een array te maken hebt maar met een enkele string die gescheiden is in puntkomma's. Probeer die eens uit elkaar te pluizen met explode().

Overigens zie je helemaal niets omdat je (volgens de browser) waarschijnlijk HTML tags aan het uitprinten bent. Zet onderaan je script om te testen maar het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo htmlspecialchars($xml);
// of
var_dump(htmlspecialchars($xml));
?>
 



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.