PHP und XML -> Parsen funktioniert nicht richtig

Alles, was PHP betrifft, kann hier besprochen werden.

PHP und XML -> Parsen funktioniert nicht richtig

Postby skunker » 22. July 2006 15:24

Hallo,

ich habe mir einen parser gebaut um den Giga Feed zu parsen. Dabei will ich den Titel und die Beschreibung untereinander haben.

Mein Parser sieht so aus:
Code: Select all
<?php

class gigafeed
{
   var $titel;
   var $descr;
   var $current_tag; //Aktueller Tag der bearbeitet wird

   function parsen()
   {
      $this->xmlobj = xml_parser_create();
      xml_set_object($this->xmlobj, &$this);
      xml_parser_set_option($this->xmlobj, XML_OPTION_CASE_FOLDING, false);
      xml_set_element_handler($this->xmlobj, "startTag","endTag");
      xml_set_character_data_handler($this->xmlobj, "dataTag");

      $fp = fopen("giga.xml", "rb");
      while($daten = fread($fp, 4096))
      {
         xml_parse($this->xmlobj, $fp, feof($fp));
      }
   }

   function startTag($obj,$element,$attribute)
   {
      $this->current_tag = $element;
   }

   function dataTag($obj,$data)
   {

      switch($this->current_tag)
      {
         case 'title':
            $this->titel .= $data;
            break;
         case 'description':
            $this->descr .= $data;
            break;
         default:
            break;
      }
   }

   function endTag($obj,$element)
   {
      if($element == "item")
      {
         echo "<b>$this->titel</b><br";
         echo "<i>$this->descr</i><br><br>";
      
      $this->titel = "";
      $this->descr = "";
      }
   }
}


$giga = new gigafeed;
$giga->parsen();

?>


Der Feed ist hier:
http://www.giga.de/info/rss/

Dort den Feed für "nur eSport News";
Man sollte die Datei öffnen und den Inhalt manuell speichern, da sonst eine unschöne Datei rauskommt. Giga hat halt mist gebaut.


So wenn ich jetzt mit meinem parser den Feed parsen will und anzeigen will. Kommt keine Fehlermeldung, aber auch keine Daten. Gar Nichts.


Wo liegt der Fehler, bzw. was mache ich falsch ?

Danke schonmal im Voraus !!!

mfg
skunker
skunker
 
Posts: 7
Joined: 22. July 2006 05:37

Postby Wiedmann » 22. July 2006 16:33

Ohne den Code jetzt insgesamt zu analysieren:
Code: Select all
$fp = fopen("giga.xml", "rb");
while($daten = fread($fp, 4096))
{
    xml_parse($this->xmlobj, $fp, feof($fp));
}

Laut Doku erwartet xml_parse() als 2.Parameter einen String. Du übergibst dort aber eine Ressource.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby skunker » 23. July 2006 01:54

hi,

achja sorry fehler beim abtippen. Ist jetzt korrigiert.

Trotzdem bleibt die Seite leer.
skunker
 
Posts: 7
Joined: 22. July 2006 05:37

Postby Wiedmann » 23. July 2006 03:11

Ist jetzt korrigiert.

Und wie?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby skunker » 25. July 2006 00:10

hi,

So wie es Wiedmann gesagt hat, $fp durch $daten ersetzt.
Sitz gerade an nem anderen PC kann aber nachher mal den kompletten source zum parsen des giga feeds raussuchen, wenn du es willst.
skunker
 
Posts: 7
Joined: 22. July 2006 05:37

Postby Wiedmann » 25. July 2006 00:26

$fp durch $daten ersetzt.

Also wenn ich das mit dem obigen Script mache, dann kommt einiges mehr als eine leere Seite...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby skunker » 25. July 2006 01:33

hmm komisch jetzt klappts auch. Ich könnte schwören vorhin gings immernoch nicht. :?

Naja hauptsache es funzt.

Ich hab mal eine andere Frage: Weißt du welche Schriftart das hier ist ( http://vertriebspartner.alice-dsl.de/ ) ? Oben rechts die auf dem roten Menühintergrund. Hab die schon öfters gesehen nur nie gefunden.

Danke schonmal !!!
skunker
 
Posts: 7
Joined: 22. July 2006 05:37


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests