Ankündigung

Einklappen
Keine Ankündigung bisher.

Auslesen mehrerer XML Attribute via PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Auslesen mehrerer XML Attribute via PHP

    Hallo liebe Leute,

    Ich stehe vor einem Problem, an dem ich nicht weiterkomme.
    Vielleicht könnt Ihr mir helfen. (gegooglet etc. hab ich schon ausführlich, um das vorweg zu nehmen.)

    Ich muss mittels PHP einen XML Code auslesen, der Diverse Attribute enthält.
    Die normalen Werte kann ich auslesen. Auf die Attribut Wert so das in diesem Fall für jeden Film ein Wert ausgegeben wird jedoch nicht. Hier erstmal mein PHP Code und der XML Code der ausgelesen werden soll:

    PHP-Code:
    <?php
        $Performance 
    simplexml_load_file('filminfos.xml');    
        foreach (
    $Performance as $filminfo):
            
            
    $EventRating=$filminfo->EventRating;            
            
    $Week=$filminfo->Week;
            
    $EventLength=$filminfo->EventLength;
            
    $LanguageVersion=$filminfo->LanguageVersion;
            
    $MediaNumber=$filminfo->MediaNumber;

            
    // liest nur jeweils den ersten Attribut Wert für jeden einzelnen Film aus
            // echo "<li>Film: ".$Performance->Event->attributes()->Name."</li>"; 
            // echo "<li>Datum: ".$Performance->Event->Site->Auditorium->Date->attributes()->Name."</li>";
            // echo "<li>Kinosaal: ".$Performance->Event->Site->Auditorium->attributes()->Name."</li>";
            
    echo "<img src='http://fotos.ticket-international.de/".$MediaNumber.".jpg'</br>";
            echo 
    "<li>FSK: ".$EventRating."</li>";       
            echo 
    "<li>Woche: ".$Week."</li>";
            echo 
    "<li>L&auml;nge: ".$EventLength." min</li>";
            echo 
    "<li>Sprache: ".$LanguageVersion."</li><br><br>";
     
        endforeach;
    ?>
    Code:
    <?xml version="1.0" standalone="yes"?>
    <Performance>
      <Event Name="Shrek 3">
        <EventID>107343</EventID>
        <MediaNumber>102770</MediaNumber>
        <ExportNumber>1086762</ExportNumber>
        <EventRating>ab 12</EventRating>
        <LanguageVersion>Digital 3D</LanguageVersion>
        <Week>1</Week>
        <EventLength>100</EventLength>
        <Frame/>
        <Site Name="Kino 1" ID="100004">
          <Auditorium Name="Saal 4" ID="100018">
            <Date Name="25.07.2014">
              <Time ShowID="384406">22:00</Time>
            </Date>
            <Date Name="26.07.2014">
              <Time ShowID="384407">22:00</Time>
            </Date>
            <Date Name="27.07.2014">
              <Time ShowID="384408">22:00</Time>
            </Date>
            <Date Name="28.07.2014">
              <Time ShowID="384409">22:00</Time>
            </Date>
            <Date Name="29.07.2014">
              <Time ShowID="384410">22:00</Time>
            </Date>
            <Date Name="30.07.2014">
              <Time ShowID="384411">22:00</Time>
            </Date>
          </Auditorium>
        </Site>
      </Event>
      <Event Name="Ein Sommer in der Provence">
        <EventID>107417</EventID>
        <MediaNumber>70153</MediaNumber>
        <ExportNumber>1080824</ExportNumber>
        <EventRating>ab 12</EventRating>
        <LanguageVersion>Digital 3D</LanguageVersion>
        <Week>0</Week>
        <EventLength>130</EventLength>
        <Frame/>
        <Site Name="Kino 1" ID="100004">
          <Auditorium Name="Saal 4" ID="100018">
            <Date Name="06.08.2014">
              <Time ShowID="385159">22:00</Time>
            </Date>
          </Auditorium>
        </Site>
      </Event>
      <Event Name="3-D:Transformers: Ära des Untergangs">
        <EventID>107304</EventID>
        <MediaNumber>67738</MediaNumber>
        <ExportNumber>67738</ExportNumber>
        <VersionNumber>TRANSFORMERS: Ä</VersionNumber>
        <EventRating>ab 12</EventRating>
        <LanguageVersion>Digital 3D</LanguageVersion>
        <Week>3</Week>
        <EventLength>164</EventLength>
        <Frame/>
        <Site Name="Kino 1" ID="100004">
          <Auditorium Name="Saal 1" ID="100009">
            <Date Name="01.08.2014">
              <Time ShowID="385072">14:00</Time>
              <Time ShowID="385073">17:15</Time>
              <Time ShowID="385074">20:30</Time>
            </Date>
            <Date Name="02.08.2014">
              <Time ShowID="385075">14:00</Time>
              <Time ShowID="385076">17:15</Time>
              <Time ShowID="385077">20:30</Time>
            </Date>
            <Date Name="03.08.2014">
              <Time ShowID="385078">14:00</Time>
              <Time ShowID="385079">17:15</Time>
              <Time ShowID="385080">20:30</Time>
            </Date>
            <Date Name="04.08.2014">
              <Time ShowID="385081">14:00</Time>
              <Time ShowID="385082">17:15</Time>
              <Time ShowID="385083">20:30</Time>
            </Date>
            <Date Name="05.08.2014">
              <Time ShowID="385084">14:00</Time>
              <Time ShowID="385085">17:15</Time>
              <Time ShowID="385086">20:30</Time>
            </Date>
            <Date Name="06.08.2014">
              <Time ShowID="385087">14:00</Time>
              <Time ShowID="385088">17:15</Time>
              <Time ShowID="385089">20:30</Time>
            </Date>
          </Auditorium>
        </Site>
      </Event>
    </Performance>
    Wenn ich versuche die Attribute auf die Weise auszulesen, wie man es im auskommentierten Bereich sieht, bekomme ich für alle 3 Events (Filme) den Selben Wert. (Also bei jedem Film den Titel: Shrek 3)

    Wie kann ich also alle Attribute, inkl. der Attributwerte für z.B Time auslesen?

    Ich bin übrigens blutiger PHP Anfänger
    Danke schon mal.


  • #2
    http://php.net/manual/de/simplexml.examples-basic.php
    beispiel 5.

    Kommentar


    • #3
      Habe das Beispiel eingebunden, Mit meinen Variablen ersetzt und die sonstigen Angaben erstmal stehen lassen. Das ganze erzeugt bei mir aber kein Resultat…
      Was mache ich falsch?

      PHP-Code:
      <?php
          $Performance 
      simplexml_load_file('filminfos.xml');    
          foreach (
      $Performance as $filminfo):
              
              
      $EventRating=$filminfo->EventRating;            
              
      $Week=$filminfo->Week;
              
      $EventLength=$filminfo->EventLength;
              
      $LanguageVersion=$filminfo->LanguageVersion;
              
      $MediaNumber=$filminfo->MediaNumber;

              
      // liest nur jeweils den ersten Attribut Wert für jeden einzelnen Film aus
              // echo "<li>Film: ".$Performance->Event->attributes()->Name."</li>"; 
              // echo "<li>Datum: ".$Performance->Event->Site->Auditorium->Date->attributes()->Name."</li>";
              // echo "<li>Kinosaal: ".$Performance->Event->Site->Auditorium->attributes()->Name."</li>";
              
      echo "<img src='http://fotos.ticket-international.de/".$MediaNumber.".jpg'</br>";
              echo 
      "<li>FSK: ".$EventRating."</li>";       
              echo 
      "<li>Woche: ".$Week."</li>";
              echo 
      "<li>L&auml;nge: ".$EventLength." min</li>";
              echo 
      "<li>Sprache: ".$LanguageVersion."</li><br><br>";

              foreach (
      $Performance->Event[0]->Site as $Site) {
                  switch((string) 
      $Site['type']) { // Verwende Attribute als Element-Indizes
                      
      case 'thumbs':
                  echo 
      $Site' thumbs up';
                  break;
                      case 
      'stars':
                  echo 
      $Site' stars';
                  break;
                  }
              }
       
          endforeach;
      ?>

      Kommentar


      • #4
        Zitat von dynamite97 Beitrag anzeigen
        Das ganze erzeugt bei mir aber kein Resultat…
        Kein Resultat bedeutet was?

        Durch Aktivieren des Error-Reportings, sprich Einfügen von

        PHP-Code:
        ini_set('display_errors''On');
        error_reporting(-1);    //max. aufgedreht 
        am Anfang des PHP-Scriptes solltest du Hinweise auf Fehler und Unzulänglichkeiten erhalten.
        PHP-Klassen auf github

        Kommentar


        • #5
          ist doch was klassisches für xslt, sp oder spo ähnlich wolltest du es haben?
          musste halt am finetuning drehen.
          Code:
          <?xml version="1.0" encoding="utf-8"?>
          <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                  
          <xsl:template match="/">
                  <ul>
                  <xsl:apply-templates select="Performance/Event" />
                  </ul>
          </xsl:template>
                  
          <xsl:template match="Event" >
                  <li>
                  <xsl:value-of select="@Name" />
                  </li>
                  <li>    
                  <xsl:value-of select="Site/@Name" />
                  </li>
                  <li>
                   <ul>           
                   <xsl:apply-templates select="Site/Auditorium/Date" />
                   </ul>
                  </li>
                  
          </xsl:template>
              
          <xsl:template match="Date">
                  
                  <li>
                  <xsl:value-of select="concat(@Name, '-' ,Time/text())" /> 
                  </li>
              
          </xsl:template>
                  
          </xsl:stylesheet>
          Zitat von http://stackoverflow.com/questions/13742972/transform-xml-with-xslt-in-php
          PHP-Code:
          <?php
          $xsl 
          = new DOMDocument();
          $xsl->load("file.xsl");
          $inputdom = new DomDocument();
          $inputdom->load("file.xml");

          $proc = new XSLTProcessor();
          $xsl $proc->importStylesheet($xsl);
          $proc->setParameter(null"""");

          $newdom $proc->transformToDoc($inputdom);
          print 
          $newdom-> saveXML();
          Zitat von Ouput
          HTML-Code:
          <ul><li>Shrek 3</li><li>Kino 1</li><li><ul><li>25.07.2014-22:00</li><li>26.07.2014-22:00</li><li>27.07.2014-22:00</li><li>28.07.2014-22:00</li><li>29.07.2014-22:00</li><li>30.07.2014-22:00</li></ul></li><li>Ein Sommer in der Provence</li><li>Kino 1</li><li><ul><li>06.08.2014-22:00</li></ul></li><li>3-D:Transformers: &#xC4;ra des Untergangs</li><li>Kino 1</li><li><ul><li>01.08.2014-14:00</li><li>02.08.2014-14:00</li><li>03.08.2014-14:00</li><li>04.08.2014-14:00</li><li>05.08.2014-14:00</li><li>06.08.2014-14:00</li></ul></li></ul>

          Kommentar

          Lädt...
          X