PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   XML - Datei komplett dynamisch auslesen (http://www.selfphp.de/forum/showthread.php?t=26059)

oemer 13.10.2017 19:39:04

XML - Datei komplett dynamisch auslesen
 
Hallo,

ich habe ein Problem, dasss ich schon seit Tagen nicht lösen kann. Und zwar möchte ich eine XML-Datei, die immer unterschiedlich aussehen kann dynamisch auslesen. Da hab ich in der PHP Dokumentation ein Beispiel gefunden, dass eigentlich sehr hilfreich ist.

Code:

<cats>
  <cat>
      <name>Jack</name>
      <age>2</age>
      <color>grey</color>
      <color>white</color>
  </cat>
  <cat>
      <name>Maxwell</name>
      <age>12</age>
      <color>orange</color>
      <color>black</color>
  </cat>
</cats>

PHP-Code:

<?php

function xmlToArray($fName){
    
$sxi = new SimpleXMLIterator($fName,null,true);
    return 
sxiToArray($sxi);
}

function 
sxiToArray($sxi){
    
$a = array();

    for (
$sxi->rewind(); $sxi->valid(); $sxi->next()){
        if (!
array_key_exists($sxi->key(), $a)){
            
$a[$sxi->key()] = array();
        }

        if(
$sxi->hasChildren()){          
            
$a[$sxi->key()][] = sxiToArray($sxi->current());
        }else{
            
$a[$sxi->key()][] = strval($sxi->current());
        }
    }
    return 
$a;
}

$test xmlToArray("cats.xml");

Aber meine XML-Datei is so aufgebaut, dass die Werte der Unterelemente als Attribute in meinem Tag stehen. Und da komm ich einfach nicht weiter. Ich hab schon vieles ausprobiert, aber ich scheiter immer wieder.

(so ungefähr könnte die XML-Datei aussehen):

Code:

<cats>
  <cat name="Jack" age="2" color="grey" color="white"/>
  <cat name="Maxwell" age="12" color="orange" color="black"/>
</cats>


Ich hoffe ihr könnt mir helfen.

sysop 16.10.2017 09:47:51

AW: XML - Datei komplett dynamisch auslesen
 
http://www.selfphp.de/code_snippets/...pet.php?id=140

oemer 17.10.2017 18:50:42

AW: XML - Datei komplett dynamisch auslesen
 
danke !!!


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:23:58 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.