Mike Richter: Komme an Werte nicht ran

Hallo,

nachfolgende XML-Daten sind in "Details" eingefasst:

[Authors] => SimpleXMLElement Object
    (
        [Author] => Array
            (
                [0] => Ernst H. Gombrich
                [1] => Christoph Waltz
            )

)

[ReleaseDate] => September 2006

[BrowseList] => SimpleXMLElement Object
    (
        [BrowseNode] => Array
            (
                [0] => SimpleXMLElement Object
                    (
                        [BrowseId] => 255955
                        [BrowseName] => Kategorien - Kindermusik & Hörspiele - Hörspiele - Allgemein
                    )

[1] => SimpleXMLElement Object
                    (
                        [BrowseId] => 280886
                        [BrowseName] => Kategorien - Kinder- & Jugendbücher - Sachbücher
                    )

)

)

Die Daten befinden sich alle in $xml und werden soweit auch korrekt ausgegeben (Authors, ReleaseDate) aber warum die einzelnen BrowseId nicht?

foreach ($xml->Details AS $book)

{

if($book->Authors->Author)
{
foreach($book->Authors->Author AS $author)
{echo $author;}
}

echo $book->ReleaseDate;

if($book->BrowseList->BrowserNode) {
 foreach($book->BrowseList->BrowserNode->BrowseId AS $nodel)
 {
 echo $nodel."<br>";
 }
 }

}

Danke,
Mike

  1. Hallo Mike,

    Die Daten befinden sich alle in $xml und werden soweit auch korrekt ausgegeben (Authors, ReleaseDate) aber warum die einzelnen BrowseId nicht?

    Weil »BrowseId« nicht mehrfach vorkommt, sondern das Elternelement. Korrekt wäre:

    foreach($book->BrowseList->BrowserNode AS $nodel) {  
      echo $nodel->BrowseId."<br>";  
    }
    

    Viele Grüße,
    Christian

    1. Hallo,

      funktioniert leider auch nicht, auch wenn es logisch klingt ;)

      Weil »BrowseId« nicht mehrfach vorkommt, sondern das Elternelement. Korrekt wäre:

      foreach($book->BrowseList->BrowserNode AS $nodel) {

      echo $nodel->BrowseId."<br>";
      }

      
      
      1. echo $begrüßung;

        funktioniert leider auch nicht, auch wenn es logisch klingt ;)

        "Funktioniert nicht" ist keine Fehlerbeschreibung, mit der man was anfangen kann. Bitte beobachte und beschreiben genauer.

        foreach($book->BrowseList->BrowserNode AS $nodel) {

        ... und mach Christians Tippfehler da raus.

        echo "$verabschiedung $name";

        1. "Funktioniert nicht" ist keine Fehlerbeschreibung, mit der man was anfangen kann. Bitte beobachte und beschreiben genauer.

          Liefert einfach keine Ausgabe.

          foreach($book->BrowseList->BrowserNode AS $nodel) {
          ... und mach Christians Tippfehler da raus.

          Kann da keinen Tippfehler sehen...

          1. echo $begrüßung;

            "Funktioniert nicht" ist keine Fehlerbeschreibung, mit der man was anfangen kann. Bitte beobachte und beschreiben genauer.
            Liefert einfach keine Ausgabe.

            Wie ist dein error_reporting und display_errors eingestellt?

            foreach($book->BrowseList->BrowserNode AS $nodel) {
            ... und mach Christians Tippfehler da raus.
            Kann da keinen Tippfehler sehen...

            Browse_r_Node

            echo "$verabschiedung $name";

      2. Hallo,

        funktioniert leider auch nicht, auch wenn es logisch klingt ;)

        Könnte ich mal ein fertiges XML-Fragment sehen und ein kurzes bisschen Beispielcode, der das entsprechende SimpleXML-Element aus dem Fragment erzeugt? Damit man das mit Originaldaten mal live ausprobieren kann?

        Viele Grüße,
        Christian

        1. Hallo,

          also hier mal der komplette Inhalt vom Object:

          SimpleXMLElement Object
          (
              [Details] => Array
                  (
                      [0] => SimpleXMLElement Object
                          (
                              [Authors] => SimpleXMLElement Object
                                  (
                                      [Author] => Hape Kerkeling
                                  )

          [ReleaseDate] => 01. Juli 2006

          [BrowseList] => SimpleXMLElement Object
                                  (
                                      [BrowseNode] => Array
                                          (
                                              [0] => SimpleXMLElement Object
                                                  (
                                                      [BrowseId] => 300667
                                                      [BrowseName] => Formate - ...
                                                  )

          [1] => SimpleXMLElement Object
                                                  (
                                                      [BrowseId] => 146424011
                                                      [BrowseName] => Formate - ...
                                                  )

          )

          )

          )

          )

          )

          Abgefragt wird so:

          <?

          $xml=simplexml_load_string($xmlstring); // $xml = dann obiger Inhalt

          foreach ($xml->Details AS $book)

          {

          if($book->Authors->Author){foreach($book->Authors->Author AS $author){echo utf8_decode($author)." ";}}

          echo $book->ReleaseDate;

          foreach($book->BrowseList->BrowserNode AS $nodel){ echo $nodel->BrowseId."<br>";}

          }

          ?>

          1. Hallo,

            foreach($book->BrowseList->BrowserNode AS $nodel){ echo $nodel->BrowseId."<br>";}

            Tja, dedlfix hat Recht, da war wirklich ein Tippfehler meinerseits drin, ich schrieb "BrowserNode" statt "BrowseNode", wie's in Deiner Struktur herauskommt.

            Übrigens, für die Zukunft: Mit XML-Fragment meinte ich eigentlich eine Zeichenkette, die die Struktur hervorruft, damit man das ohne Probleme einfach mal bei sich selbst zu Hause ausprobieren kann. Deine print_r-Ausgabe ist nämlich nicht so toll, wenn man's einfach mal selbst in PHP eingeben will. ;-)

            Viele Grüße,
            Christian