simplexml: Wie komme ich an die Werte

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • simplexml: Wie komme ich an die Werte

    Hallo liebes Team,

    Habe eine users.xml Datei mit folgendem Inhalt:

    Quellcode

    1. <config>
    2. <list name="User">
    3. <listitem>
    4. <variable name="Name">Peter</variable>
    5. <variable name="Domain">domain1.de</variable>
    6. </listitem>
    7. <listitem>
    8. <variable name="Name">Mike</variable>
    9. <variable name="Domain">domain2.de</variable>
    10. </listitem>
    11. </list>
    12. </config>
    Alles anzeigen


    Um jetzt an die Werte heranzukommen dachte ich mir das so:

    Quellcode

    1. $file = 'D:/apachefriends/htdocs/testumgebung/users.xml';
    2. $xml = simplexml_load_file($file);
    3. foreach($xml->listitem as $Wert) {
    4. $Name = trim($Wert->variable[0]);
    5. $Domain = trim($Wert->variable[1]);
    6. if($Name){
    7. echo $Name."<br>";
    8. echo $Domain."<br>";
    9. } else {
    10. echo "Fehler<br>";
    11. }
    12. }
    Alles anzeigen


    Es funktioniert aber leider nicht, was habe ich da nicht beachtet?

    ein var_dump(); liefert das Objekt richtig aus, also irgendwas muss ich falsch gemacht haben.

    Aber was?
    Man muss nicht wissen wie es geht, man muss nur wissen wo es steht! Natürlich bei easy-coding 8o de
  • naja, eine Schleife reicht hier nicht ganz aus.
    Sparen kannst du bei der Attributschleife, wenn es wirklich nur ein Attribut gibt.

    Quellcode

    1. foreach($xml->list->listitem as $listitem) {
    2. foreach($listitem->variable as $variable) {
    3. echo '<br/>'.$variable.'<br/>';
    4. foreach($variable->attributes() as $key => $val) {
    5. echo "@$key = $val<br/>";
    6. }
    7. }
    8. }


    Je nachdem was du eigentlich vorhast, helfen dir auch XPATH Ausdrücke.
  • @ kingluui

    ...also irgendwas muss ich falsch gemacht haben.

    Aber was?


    Ein kleiner Fehler nur, einen Knoten zu tief bei der foreach angesetzt, da gehört noch das ->list mit hinein, dann funktioniert es.


    Quellcode

    1. $file = 'D:/apachefriends/htdocs/testumgebung/users.xml';
    2. $xml = simplexml_load_file($file);
    3. foreach($xml->list->listitem as $Wert) {
    4. $Name = trim($Wert->variable[0]);
    5. $Domain = trim($Wert->variable[1]);
    6. if($Name){
    7. echo $Name."<br>";
    8. echo $Domain."<br>";
    9. } else {
    10. echo "Fehler<br>";
    11. }
    12. }
    Alles anzeigen