XML auslesen mit 2 gleichen Inhalten

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

  • XML auslesen mit 2 gleichen Inhalten

    Hallo zusammen.

    Sorry, dass ich wahrscheinlich wieder eine relativ dumme Frage stelle, aber irgendwie fehlt mir selbst das Wissen, um richtig nach der Lösung zu suchen. Hier mein Problem:

    Ich habe eine XML Datei, die wie folgt aussieht:


    Code:
       <?xml version="1.0" encoding="UTF-8" ?> 
    <product>
    <item>
      <title>TITEL</title> 
      <description>BESCHREIBUNG</description> 
      <price>PREIS</price> 
      <photo>IMAGE</photo> 
      <link>LINK</link> 
      </item>
    <item>
      <item>
      <title>TITEL</title> 
      <description>BESCHREIBUNG</description> 
      <price>PREIS</price> 
      <photo>IMAGE</photo> 
      <link>LINK</link> 
      </item>
    <item>
    </product>
    Dazu kommt, dass diese von mir von einem anderen Server ausgelesen wird, und ich somit leider nichts ändern kann an der Struktur.

    Der Code zum Auslesen sieht bei mir so aus:
    PHP-Code:
    <?php

    $daten 
    file_get_contents("Link zur XML Datei");

    $daten explode("<item>" $daten);

    for (
    $zaehler 1$zaehler count($daten); $zaehler++) { 

    ereg("<title>(.*)</title>" $daten[$zaehler] , $title);

    echo 
    "<dl>\n";

    echo 
    " <dt> <b .($title[1]). >$title[1]</b> </dt>\n";

    echo 
    "</dl>\n";
    }
    ?>
    Das Problem was ich nun habe ist, dass logischerweise nun beide Titel ausgelesen werden. Es soll aber nur einer der beiden ausgelesen werden, und beim Refresh der Seite der andere. Kann auch zufällig sein. Hauptsache, es wird überhaupt nur einer und nicht beide angezeigt.

    Gibts dafür eine Lösung?

    Für Tipps und Hilfen bin ich dankbar.

    Grüße
    Andy

  • #2
    Probiere mal:

    http://de.php.net/manual/en/function...-load-file.php

    Kommentar


    • #3
      daten in einen array schreiben und immer nur ein element anzeigen lassen
      it's not a bug,
      it's a feature!

      Kommentar


      • #4
        Danke für die ersten beiden Antworten!

        Unter dem Link hab ich erstmal genug zum lesen und ausprobiren. Danke.

        Was du schreibst, XGremliN, hört sich bestimmt für einige logisch und gut an, aber ich kann da leider gerade nichts mit anfangen. Auch wenn ich es gerne wollte

        Grüße
        Andy

        Kommentar


        • #5
          PHP-Code:
          preg_match_all('/<item>.*<title>(.*)<\\\/title>(.*)<\\\/item>iUs/',$deinString,$ret);
          //$anzKey sollte die Keys enthalten welche eindeutige Titel haben
          //Doubletten werden entfernt
          $anzKey array_unique($ret[1]);
          foreach(
          $anzKey as $key=>$wert){
            echo 
          $ret[1][$key].'<br />'.$ret[2][$key].'<br />';

          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Ich frage mich, warum man XML-Datenformat gewählt hat? Mit Sicherheit nicht dafür, dass PHP-Programmierer die Datei als String einliest und mit preg_match zerpflückt

            Kommentar

            Lädt...
            X