XML Datei / assoziativen Array | Problem!

Breuker

Erfahrenes Mitglied
Hallo!

Ich habe folgende XML Datei:

PHP:
<?xml version="1.0"?>
<meta>
<news:titel>Problem</news:titel>
<news:inhalt>Text</news:inhalt>
</meta>

Diese lese ich in folgenden PHP-Abschnitt aus:

PHP:
$data = implode("",@file("test.xml"));
$parser = xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($parser,$data,$values);
foreach($values as $val)
{
echo $val[tag].'<br>';
echo $val[type].'<br>';
echo $val[level].'<br>';
echo $val[value].'<hr>';
}
echo '<pre>';
print_r($values);

so, nun mein Problem: Ich möchte die Arrays so auslesen können, dass ich z.B. schreiben "$meta['news:titel']" und das ich dann "Problem" ausgegeben bekomme...

Könnt ihr mir dabei helfen?

Breuker
 
Hallo,
so sollte es funktionieren:
PHP:
<?php
    $data = implode('', @file('test.xml'));
    $parser = xml_parser_create();
    xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
    xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
    xml_parse_into_struct($parser,$data,$values);
    
    foreach ($values as $value){
        if ($value['type'] == 'open' && $value['level'] == 1){
            $arrayname = $value['tag'];
            ${$arrayname} = array();
        } else if ($value['type'] == 'complete' && $value['level'] == 2) {
            ${$arrayname}[$value['tag']] = $value['value'];
        }
    }
    
    echo $meta['news:titel'];
?>

mfg
forsterm
 
Zurück