Ankündigung

Einklappen
Keine Ankündigung bisher.

SimpleXML Xpath-Abfrage

Einklappen

Neue Werbung 2019

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

  • SimpleXML Xpath-Abfrage

    Hallo Gemeinschaft,

    folgendes problem - ich weiss nicht mit welcher abfrage ich an die daten komme

    ich benötige die daten von decription in abhängigkeit von der shipid und cabinid die ich als variable bekomme

    so greife ich auf die
    PHP-Code:
    $cabins simplexml_load_file("http://datei.de/xml/?action=getCabins&partnerID=11111020&shipID=".$searchResult['Ship']['ShipID']); 
    das ist ein auszug der xml datei
    HTML-Code:
    <SearchResult>
    <ShipID>373</ShipID>
    <ShipName>Nautica</ShipName>
    <CabinList>
    <Cabin>
    <CabinID>4329</CabinID>
    <CabinName>Owner's Suite</CabinName>
    <CabinCode>OS</CabinCode>
    <CabinArt>Suite</CabinArt>
    <Color>F5797B</Color>
    <Passengers>2</Passengers>
    <PassengersMaximum>0</PassengersMaximum>
    <Description>
    &lt;ul&gt;&lt;li&gt;ca. 90 qm&lt;/li&gt;&lt;li&gt;Teakholz-Veranda mit hochwertigen Lounge-M&#xf6;beln&lt;/li&gt;&lt;li&gt;Schlafzimmer mit 1 Queen-Size Bett und TV-Flachbildschirm&lt;/li&gt;&lt;li&gt;Badezimmer mit Whirlpoolwanne, WC&lt;/li&gt;&lt;li&gt;G&#xe4;stebadezimmer&lt;/li&gt;&lt;li&gt;F&#xf6;hn&lt;/li&gt;&lt;li&gt;Bvlgari Toilettenartikel&lt;/li&gt;&lt;li&gt;Badem&#xe4;ntel und Slipper&lt;/li&gt;&lt;li&gt;Separates Wohnzimmer mit Essbereich&lt;/li&gt;&lt;li&gt;Begehbarer Kleiderschrank&lt;/li&gt;&lt;li&gt;Schreibtisch&lt;/li&gt;&lt;li&gt;Tageszeitung&lt;/li&gt;&lt;li&gt;Privater Fitnessraum&lt;/li&gt;&lt;li&gt;iPad&#xae;&lt;/li&gt;&lt;li&gt;Notebook mit Zugriff auf W-LAN&lt;/li&gt;&lt;li&gt;42&quot; Flachbildschirm TV mit Bose&#xae; Surroundsoundsystem&lt;/li&gt;&lt;li&gt;CD-Player, DVD-Player&lt;/li&gt;&lt;li&gt;Entertainment-System&lt;/li&gt;&lt;li&gt;Satellitentelefon-Service und Mobiltelefon-Service&lt;/li&gt;&lt;li&gt;Minibar (alkoholfreie Getr&#xe4;nke sind gratis)&lt;/li&gt;&lt;li&gt;Safe&lt;/li&gt;&lt;li&gt;Obstkorb&lt;/li&gt;&lt;li&gt;Schuhputz-Service&lt;/li&gt;&lt;li&gt;24-Stunden Butler-Service&lt;/li&gt;&lt;li&gt;Flasche Champagner zur Begr&#xfc;&#xdf;ung&lt;/li&gt;&lt;li&gt;Bar mit ausgew&#xe4;hlten Spirituosen und Wein&lt;/li&gt;&lt;li&gt;T&#xe4;glich frische Canap&#xe9;s in der Kabine&lt;/li&gt;&lt;li&gt;Bevorzugte Restaurant Reservierung&lt;/li&gt;&lt;li&gt;B&#xfc;gelservice bei Einschiffung&lt;/li&gt;&lt;li&gt;Bevorzugte Einschiffung und Gep&#xe4;ckanlieferung&lt;/li&gt;&lt;li&gt;Stromspannung 110 - 220 V&lt;/li&gt;&lt;/ul&gt;
    </Description>
    <CabinPictures>
    <Picture>
    <URL>
    http://www.datei.de/media/images/shipimages/373/medium/Kat-OS-OwnersSuite0_1013.jpg
    </URL>
    <Width>210</Width>
    <Height>149</Height>
    </Picture>
    </CabinPictures>
    <AvailableOnDecks>
    <Deck>
    <DeckID>2344</DeckID>
    <DeckName>Deck 8</DeckName>
    <DeckNrOnShip>8</DeckNrOnShip>
    </Deck>
    <Deck>
    <DeckID>2345</DeckID>
    <DeckName>Deck 7</DeckName>
    <DeckNrOnShip>7</DeckNrOnShip>
    </Deck>
    <Deck>
    <DeckID>2346</DeckID>
    <DeckName>Deck 6</DeckName>
    <DeckNrOnShip>6</DeckNrOnShip>
    </Deck>
    </AvailableOnDecks>
    </Cabin>
    <Cabin>
    <CabinID>4330</CabinID>
    <CabinName>Vista Suite</CabinName>
    <CabinCode>VS</CabinCode>
    <CabinArt>Suite</CabinArt>
    <Color>96B86B</Color>
    <Passengers>2</Passengers>
    <PassengersMaximum>0</PassengersMaximum>
    <Description>
    &lt;ul&gt;&lt;li&gt;ca. 73 qm&lt;/li&gt;&lt;li&gt;Teakholz-Veranda mit hochwertigen Lounge-M&#xf6;beln&lt;/li&gt;&lt;li&gt;Schlafzimmer mit 1 Queen-Size Bett und TV-Flachbildschirm&lt;/li&gt;&lt;li&gt;Badezimmer mit Whirlpoolwanne, WC&lt;/li&gt;&lt;li&gt;G&#xe4;stebadezimmer&lt;/li&gt;&lt;li&gt;F&#xf6;hn&lt;/li&gt;&lt;li&gt;Bvlgari Toilettenartikel&lt;/li&gt;&lt;li&gt;Badem&#xe4;ntel und Slipper&lt;/li&gt;&lt;li&gt;Separates Wohnzimmer mit Essbereich&lt;/li&gt;&lt;li&gt;Begehbarer Kleiderschrank&lt;/li&gt;&lt;li&gt;Schreibtisch&lt;/li&gt;&lt;li&gt;Tageszeitung&lt;/li&gt;&lt;li&gt;iPad&#xae;&lt;/li&gt;&lt;li&gt;Notebook mit Zugriff auf W-LAN&lt;/li&gt;&lt;li&gt;42&quot; Flachbildschirm TV mit Bose&#xae; Surroundsoundsystem&lt;/li&gt;&lt;li&gt;CD-Player, DVD-Player&lt;/li&gt;&lt;li&gt;Entertainment-System&lt;/li&gt;&lt;li&gt;Satellitentelefon-Service und Mobiltelefon-Service&lt;/li&gt;&lt;li&gt;Minibar (alkoholfreie Getr&#xe4;nke sind gratis)&lt;/li&gt;&lt;li&gt;Safe&lt;/li&gt;&lt;li&gt;Obstkorb&lt;/li&gt;&lt;li&gt;Schuhputz-Service&lt;/li&gt;&lt;li&gt;24-Stunden Butler-Service&lt;/li&gt;&lt;li&gt;Flasche Champagner zur Begr&#xfc;&#xdf;ung&lt;/li&gt;&lt;li&gt;Bar mit ausgew&#xe4;hlten Spirituosen und Wein&lt;/li&gt;&lt;li&gt;T&#xe4;glich frische Canap&#xe9;s in der Kabine&lt;/li&gt;&lt;li&gt;Bevorzugte Restaurant Reservierung&lt;/li&gt;&lt;li&gt;B&#xfc;gelservice bei Einschiffung&lt;/li&gt;&lt;li&gt;Bevorzugte Einschiffung und Gep&#xe4;ckanlieferung&lt;/li&gt;&lt;li&gt;Wohnzimmer mit Sofa, Sesseln&lt;/li&gt;&lt;li&gt;Stromspannung 110 - 220 V&lt;/li&gt;&lt;/ul&gt;
    </Description>
    <CabinPictures>
    <Picture>
    <URL>
    http://www.datei.de/media/images/shipimages/373/medium/Kat-VS_VistaSuite1_8228.jpg
    </URL>
    <Width>210</Width>
    <Height>149</Height>
    </Picture>
    </CabinPictures>
    <AvailableOnDecks>
    <Deck>
    <DeckID>2345</DeckID>
    <DeckName>Deck 7</DeckName>
    <DeckNrOnShip>7</DeckNrOnShip>
    </Deck>
    <Deck>
    <DeckID>2346</DeckID>
    <DeckName>Deck 6</DeckName>
    <DeckNrOnShip>6</DeckNrOnShip>
    </Deck>
    </AvailableOnDecks>
    </Cabin>

  • #2
    Hallo jensg,

    postet Du neuerdings unter Forgeschritten um ein Link auf DomDoc zu bekommen oder willst Du xslt nutzen ?
    Eine konkretere Frage wäre auch gut.

    Kommentar


    • #3
      Code:
      /SearchResult//Cabin[./CabinID = 4329]/Description
      Nächstes mal poste bitte korrektes XML, in deinem Beispiel fehlen 2 schließende Tags.
      [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
      [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

      Kommentar


      • #4
        Hallo Tom,

        ich benötige die daten von description in abhängigkeit von der shipid und cabinid die ich als variable bekomme

        ich weiss nicht wie die abfrage aussieht, damit ich in eine variable den wert von description bekomme

        Kommentar


        • #5
          VPh

          kannst du mir das bitte hierran zeigen
          PHP-Code:
          $cabins simplexml_load_file("http://datei.de/xml/?action=getCabins&partnerID=11111020&shipID=".$searchResult['Ship']['ShipID']); 
          wie würde denn dann die abfrahe aussehen

          $des_cabin =

          Kommentar


          • #6
            Moin,

            PHP-Code:
            $cabins simplexml_load_file("http://datei.de/xml/?action=getCabins&partnerID=11111020&shipID=".$searchResult['Ship']['ShipID']);
            $nodeList $cabins->xpath('/SearchResult//Cabin[./CabinID = ' $cabinId ']/Description');
            if (isset(
            $nodeList[0])) {
                
            $cabinDescription = (string) $nodeList[0];

            Die xpath-Methode gibt dir eine Liste von Nodes die zu deiner Abfrage passen. Du prüfst, ob es in der Liste einen Eintrag gibt und castest ihn als String um dein Ergebnis zu erhalten.

            hausl Können wir den Threadtitel zu "SimpleXML Xpath-Abfrage" oder so umbenennen? Das Thema an sich ist ja recht interessant
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              MOD: Erledigt, und verschoben von PHP-Fortgeschritten.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                bekomme leider keinen inhalt angezeigt

                PHP-Code:
                                        $cabins simplexml_load_file("http://datei.de/xml/?action=getCabins&partnerID=11111020&shipID=".$searchResult['Ship']['ShipID']);
                $nodeList $cabins->xpath('/SearchResult//Cabin[./CabinID = ' .$pri->CabinTypeID ']/Description');
                    
                $cabinDescription = (string) $nodeList[0];
                    echo 
                "HIER";
                    echo 
                $cabinDescription

                Kommentar


                • #9
                  Gibt es im XML noch über dem SearchResult ein Element? Dann müsstest du die Abfrage anpassen.
                  Gibt es die CabinID die du abfragst? Im Code steht CabinTypeID, das sieht nach einem anderen Wert aus.
                  [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                  [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                  Kommentar


                  • #10
                    Die Variable kommt aus einer anderen xml und heisst dort so

                    wenn ich mir das ausgeben lasse .$pri->CabinTypeID . bekomme ich einen richtigen wert

                    Kommentar


                    • #11
                      über searchresult gibt es kein element

                      Kommentar


                      • #12
                        Poste doch mal ein vollständiges Beispiel, bei dem das Problem auftritt.

                        Kommentar


                        • #13
                          Zitat von jensg Beitrag anzeigen
                          wenn ich mir das ausgeben lasse .$pri->CabinTypeID . bekomme ich einen richtigen wert
                          Gibt es in der XML ein CabinID-Feld dass deine CabinTypeID enthält?
                          Hat das XML vielleicht einen Namespace? Dann müsstest du den auch noch registrieren: http://php.net/manual/de/simplexmlel...hnamespace.php

                          Ansonsten gehen mir jetzt die Ideen aus, da müsste schon ein bisschen mehr input von dir kommen. Hast du aus der Wissenssammlung schon den Debugging Leitfaden angesehen?
                          [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                          [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                          Kommentar


                          • #14
                            diese beiden werte bekomme ich aufgrund einer abfrage - wenn ich sie mir per echo ausgeben lasse dann werden diese auch angezeigt
                            HTML-Code:
                            <td width="10">    '.$searchResult['Ship']['ShipID'].'-'.$pri->CabinTypeID.'</td>
                            und das sind die Werte, die ich eingeben muss, damit ich an die description ran komme von der entsprechenden kabine

                            das müsste dann schon richtig sein - nur bekommt die variable keinen wert
                            PHP-Code:
                            $cabins simplexml_load_file("http://datei.de/xml/?action=getCabins&partnerID=11111020&shipID=".$searchResult['Ship']['ShipID']);
                            $nodeList $cabins->xpath('/SearchResult//Cabin[./CabinID = ' .$pri->CabinTypeID ']/Description');
                                
                            $cabinDescription = (string) $nodeList[0]; 

                            Kommentar


                            • #15
                              echo eignet sich halt nicht für Debug-Ausgaben.

                              Kommentar

                              Lädt...
                              X