Announcement

Collapse
No announcement yet.

XML in Array umwandeln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML in Array umwandeln

    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:
    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($parserXML_OPTION_CASE_FOLDING0); 
        
    xml_parser_set_option($parserXML_OPTION_SKIP_WHITE1); 
        
    $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>'
    Grüße eure
    unterstrichen
Working...
X