xml leere daten verarbeiten

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

  • xml leere daten verarbeiten

    liebe xml spezialisten

    ich habe ein problem mit xml einlesen in php

    habe folgendes in xml stehen

    <objektart>
    <wohnung/>
    </objektart>

    frage es so ab:
    foreach($xml->anbieter->immobilie[$i]->objektkategorie as $objart) {
    $objart_typ1 = $objart->objektart->haus[haustyp];
    $objart_typ2 = $objart->objektart->wohnung[wohnungtyp];
    }

    funktioniert soweit.

    wenn aber kein [wohnungstyp] oder [haustyp] angegeben ist, dann bekomme ich kein Resultat, das brauche ich aber.

    am liebsten würde ich nur "haus" oder "wohnung" abfragen, wenn das vorhanden ist reicht es mir schon, ich brauch nichts weiterführendes.
    Kann es aber nicht, bekomme bei variante

    foreach($xml->anbieter->immobilie[$i]->objektkategorie as $objart) {
    $objart_typ1 = $objart->objektart->haus;
    $objart_typ2 = $objart->objektart->wohnung;
    }

    nix zurück.

    Ihr habt sicherlich eine Idee wie ich das relaisieren kann.

    danke im voraus.

  • #2
    Ich kenne dein restliches Xml nicht, aber ich vermute fast, dass das Script gar nicht in die foreach-Schleife reingeht -> mach mal ne x-beliebige Testausgabe in der Schleife, damit du siehst, ob das Script überhaupt in der Schleife landet.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      geht alles mit der foreach schleife, habe mehrere schleifen aufgebaut.

      bekomme ja eine rückmeldung, wenn der volle teil da ist als zb.
      <objektart>
      <wohnung wohnungtyp=xyz><wohnung/>
      </objektart>

      nur wenn der vordere teil nicht da ist (kann ich nicht beinflussen wann dieser teil da ist und wann nicht) dann gibts die probleme.

      habe mich gestern nacht gespielt und bin jetzt auf folgende lösung gekommen, weiss aber noch nicht ob diese zu 100% funktioniert

      anstelle
      $objart_typ2 = $objart->objektart->wohnung[wohnungtyp];

      jetzt
      if($objart->objektart->wohnung) {
      $objart_typ2 = "Wohnung";
      }

      werde nun testen ob es bei allen sitautionen funktioniert.

      danke mal für deine antwort.

      Kommentar


      • #4
        Hallo,

        ich geh mal davon aus, das es sich um die OpenImmo Schnittstelle handelt?
        Dort ist es meines Wissens so, dass es pro Immobilie auch nur einmal das <objektkategorie> Element vorkommt. Von daher wird die foreach Schleife eh nur einmal durchlaufen.

        Ein

        PHP-Code:
        $objart $xml->anbieter->immobilie[$i]->objektkategorie
        macht also das selbe.

        Nun versteh ich auch noch nicht ganz, welches Ergebnis du möchtest.
        Die Immobilie kann entweder ein Haus oder Wohnung oder Zimmer, etc. sein. Je nach Wahl besitzt objektart ein Kindelement. Und unter Umständen, wenn die Objektart noch detailierter gewählt wurde (Wohnung-> Appartment, Atelier, Dachwohnung, etc) hat dieses Element noch ein Attribut.

        Wenn du also folgende machst solltest du alle Informationen erhalten:
        PHP-Code:
        $objart $xml->anbieter->immobilie[$i]->objektkategorie->objektart;

        if(isset(
        $objart->wohnung)) {
            echo 
        "Objekt ist eine Wohnung..";
            if(isset(
        $objart->wohnung[wohnungtyp])) {
                echo 
        "Wohnungstyp: ". (string) $objart->wohnung[wohnungtyp];
            }
        }

        if(isset(
        $objart->haus)) {
            echo 
        "Objekt ist ein Haus..";
            if(isset(
        $objart->haus[haustyp])) {
                echo 
        "Haustyp: ". (string) $objart->haus[haustyp];
            }

        Gruß Danny
        hostbar - Full Service Internet Agentur

        Kommentar


        • #5
          hallo danny
          es geht um openimmo ist vollkommen richtig.
          peo immobilie kommt das element auch nur einmal vor, aber wenn du mehr objekte jhats, dann kommt es entsprechend öfter vopr, daher der schleifendurchflauf bei mir, der auch tadellos funktinoiert.

          jedoch wohnungstyp und haustyp etc. sind nicht immer vorhanden, kommt darauf an mit welchem programm man arbeitet.

          mein lösungsansatz, aber auch deiner funktionieren jetzt tadellos, danke für eure unterstützung, kann damit weiterarbeiten.

          lg und danke für die hilfe

          Kommentar

          Lädt...
          X