Neuigkeiten:

still alive...

Hauptmenü

XML parsen schlägt fehl

Begonnen von styla, 22. Juli 2006, 05:45:57

Vorheriges Thema - Nächstes Thema

styla

hi,
ich habe mir einen php parser gecodet welcher untereinander die Titel von dem Giga Newsfeed ausgeben soll.
Der code sieht wie folgt aus:
 


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, \"_getData\");
//Giga RSS Datei laden
if(!($fp = fopen($this->xml_file,\"r\"))) { echo \"Date nicht korrekt geladen.\"; exit; }
while($xml = fread($fp, 4096))
{
   xml_parse($this->xmlobj, $xml, feof($fp));
}
 
// XML erfolgreich geparst
}
//start Tags erkennen
function _startTag($obj,$element,$attr)
{
$this->akt_tag = $element;
}
//end Tags erkennen und Feed ausgeben
function _endTag($obj,$element)
{
   $this->titel = strip_tags($this->titel);
   $this->tt .= \"$this->kategorie\";
   $this->titel = \"\";
}
//getData -> Text aus den Tags laden
function _getData($obj, $_Data)
{
//echo $this->akt_tag;
if($this->akt_tag == \"title\")
{
   $this->titel = $_Data;
}
else if($akt_tag == \"link\")
{
   $this->link = $_Data;
}
else if($akt_tag == \"description\")
{
   $this->beschreibung = $_Data;
}
else if($akt_tag == \"category\")
{
   $this->kategorie = $_Data;
}
}
function showfeed()
{
echo $this->tt;
//test
$fd = fopen(\"tt.txt\", \"w\");
fwrite($fd, $this->tt);
fclose($fd);
}
function setxmlfile($datei)
{
$this->xml_file = $datei;
}
}
?>

 
 
mit startparsen wird der parsvorgang gestartet und mit showfeed werden die titel angezeigt (oder auch nicht)
Mit setxmlfile wird der dateiname festgelegt.
Wenn ich jetzt aber versuche link,kategorie,o.ä. auszugeben kommt nichts. er kriegt einfach keine Infos.
Bei titel bekomme ich zwar alle aber in ziemlich großer Schriftart und einen großen Abstand (siehe unten)
Die XML datei von Giga sieht so aus:
 


 
 GIGA eSports News
 http://www.giga.de/tv/esports/
 GIGA eSports News
 de
  GIGA.DE
  http://www.giga.de
  http://static1.giga.de/giga-100x100.jpg
 
GIGA //  goes to Italy: KODE5
http://www.giga.de/tv/esports/00133181_giga_goes_to_italy_kode5/
http://www.giga.de/tv/esports/00133181_giga_goes_to_italy_kode5/
21.07.06 16:48 - (dave) Ciao Ragazzi! Nicht die schsein.]]>
GIGA eSports - eSports-News
http://www.giga.de/tv/esports/00133181_giga_goes_to_italy_kode5/comments/
Fri, 21 Jul 2006 16:48:00 +0200
text/html
de
 
Es dreht sich doch: das Wechselkarussell
http://www.giga.de/tv/esports/00133171_es_dreht_sich_doch_das/
http://www.giga.de/tv/esports/00133171_es_dreht_sich_doch_das/
21.07.06 12:56 - (Phil) Kapio weg Talk.]]>
GIGA eSports - On Air
http://www.giga.de/tv/esports/00133171_es_dreht_sich_doch_das/comments/
Fri, 21 Jul 2006 12:56:00 +0200
text/html
de
 
...

 
 
Wenn ich den titel ausgeben lasse, fügt er noch leere datensätze ein, als ob ein leerer Titel da wär:


GIGA eSports News
 GIGA.DE
usw...

 
 
Wo liegt das Problem ?
Ich bedanke mich schonmal recht herzlich für jede Hilfe !!!
mfg
STyla
 - Editiert von STyla am 22.07.2006, 10:14 -
 - Editiert von STyla am 22.07.2006, 10:15 -
 - Editiert von STyla am 22.07.2006, 10:15 -
 - Editiert von STyla am 22.07.2006, 10:17 -

styla

hab das ganze bissel entschärft, weils die breite zerschossen hat.
Achtung !!!!
Ich hab jetzt ebend was herausgefunden. Es liegt in der Tat an der XML Datei (denk ich zumindest), denn ich hab folgendes getestet:
ein rdf dokument mit


 
 Alcohol 120% 1.9.5.4212  - Neue Version
 http://copybase.ch/Cb/PHPV2/News/Comments.php?Id=344
 Kein beschreibender Inhalt vorhanden.
 Nachrichtenmeldung
 2006-06-16T20:15:15+02:00
 text/html
 de
 Copybase.ch – Alle Rechte vorbehalten

 
 
und davon jeweils 8 Einträge !!!
Wenn ich den gleichen nochmal anfüge, also 9 dann zeigt wer mir wieder nichts an !
ABER: Wenn ich eine Zeile entferne z.B. die .. oder eine andere dann funktioniert das wieder.
Wo liegt jetzt der Fehler ?
Danke im Voraus !!!
mfg
STyla

styla

so,
ich habs zwar nicht xmllike gelöst, aber mit regulären ausdrücken war das eine sache von fünf Minuten.

styla

ha denkste,
so wie ich es brauch gehts net mit reg. Ausdrücken.
Also ich suche doch noch eine Lösung für das Problem.


styla

hi,
jo danke. Bei Simplexml ist wieder das problem das er nicht direkt parset sondern vorlädt.
Hab es jetzt aber hinbekommen. Waren ein paar Fehler bei groß/Kleinschreibung.
 
Wenn es jemanden interessiert dann poste ich noch heute hier den vollständigen code!

all your base are belong to us / Discord