Hallo,

Ik ben bezig met het uitlezen van een xml door middel van php. Hieronder mijn xml:

voobeeld_xml.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<leerlingen>
<leerling>
<voornaam>Bert</voornaam>
<achternaam>van der Plas</achternaam>
<beroep>Loodgieter</beroep>
<leeftijd>25</leeftijd>
</leerling>
<leerling>
<voornaam>Jaap</voornaam>
<achternaam>Ouwehand</achternaam>
<beroep>Visser</beroep>
<leeftijd>20</leeftijd>
</leerling>
</leerlingen>

Het is de bedoeling dat ik de beroepen (Loodgieter en Visser) in een array stop .
Nu heb ik het volgende geprobeerd:

<?php
$array = array();
$xml = simplexml_load_file('voorbeeld_xml.xml');

foreach($xml->leerling->beroep as $beroep){
array_push( $array, $beroep );
}

?>

Nu stopt hij maar 1 waarde in de array..
Iemand enig idee?
Alvast bedankt voor de moeite.
Groeten,
KoK


<?php

$file = "data.xml";
$xml_parser = xml_parser_create();

if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

$data = fread($fp, filesize($file));
fclose($fp);
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);

$params = array();
$level = array();
foreach ($vals as $xml_elem) {
  if ($xml_elem['type'] == 'open') {
    if (array_key_exists('attributes',$xml_elem)) {
      list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
    } else {
      $level[$xml_elem['level']] = $xml_elem['tag'];
    }
  }
  if ($xml_elem['type'] == 'complete') {
    $start_level = 1;
    $php_stmt = '$params';
    while($start_level < $xml_elem['level']) {
      $php_stmt .= '[$level['.$start_level.']]';
      $start_level++;
    }
    $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
    eval($php_stmt);
  }
}

echo "<pre>";
print_r ($params);
echo "</pre>";

?>


bron : http://nl3.php.net/manual/en/function.xml-parser-create.php
Wauw, hoe je van iets simpels iets ingewikkelds kan maken...

Het probleem is gewoon dat je niet meerdere beroepen hebt per leerling, maar meerdere leerlingen met 1 beroep. Gooi het resultaat van [php]simplexml_load_file[/php] maar eens in [php]var_dump[/php] en aanschouw.

Waarschijnlijk zal het iets zijn als

foreach($xml->leerling as $leerling) {
   $array[] = $leerling->beroep
}
Hartstikke bedankt Jelmer!:D

Dit is idd hetgene dat ik nodig had.
Top!

Reageren