Hallo zusammen,
ich bin ein Neuling in Sachen XML und hab bis jetzt leider noch keine Lösung gefunden.
Ich habe eine XML-Datei die mehrere Subknoten (ein + davor, dass man "öffnen" kann) hat und in einer noch CDATA Element hat.
Ich hab es bis jetzt nur ein Code gefunden, der mir die Attribute etc. in ein Array schreibt, aber das CDATA Element außen vor lässt.
Kann mir hier jemand weiterhelfen, wie ich die CDATA Elemente auch noch zusätzlich in ein Array bekomme?
Über Ideen/Hilfe würde ich mich sehr freuen!
Die Umsetzung ist in PHP.
Hier mal der gefundene Code:
Grüße eure
unterstrichen
ich bin ein Neuling in Sachen XML und hab bis jetzt leider noch keine Lösung gefunden.
Ich habe eine XML-Datei die mehrere Subknoten (ein + davor, dass man "öffnen" kann) hat und in einer noch CDATA Element hat.
Ich hab es bis jetzt nur ein Code gefunden, der mir die Attribute etc. in ein Array schreibt, aber das CDATA Element außen vor lässt.
Kann mir hier jemand weiterhelfen, wie ich die CDATA Elemente auch noch zusätzlich in ein Array bekomme?
Über Ideen/Hilfe würde ich mich sehr freuen!
Die Umsetzung ist in PHP.
Hier mal der gefundene Code:
PHP Code:
function fetch_xml($xml){
if(is_file($xml)){
$xml_data = file_get_contents($xml);
}
else{
$xml_data = $xml;
}
$parser = xml_parser_create();
xml_parse_into_struct($parser, $xml_data, &$assoc_arr, &$idx_arr);
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
$root_tag = $assoc_arr[0]['tag'];
$base_tag = strtolower($assoc_arr[1]['tag']);
$i = 0;
foreach($assoc_arr as $key => $element){
if($element['tag'] != $root_tag){
if(!preg_match('/^\s+$/', $element['value'])){
$tag = strtolower($element['tag']);
$items[$i][$tag] = $element['value'];
if($tag == $base_tag){
$i++;
}
}
elseif(isset($element['attributes'])){
$items[$i]['id'] = $element['attributes']['ID'];
}
}
}
return $items;
}
$items = fetch_xml('../datei.xml');
echo '<pre>';
print_r($items);
echo '</pre>';
unterstrichen