Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - PHP e SAX: ma dove sta l'errore nell'elaborazione?
Forum - PHP - PHP e SAX: ma dove sta l'errore nell'elaborazione?

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
joker_ (Ex-Member)
Pro


Messaggi: 182
Iscritto: 14/02/2005

Segnala al moderatore
Postato alle 14:58
Martedì, 17/01/2006
Salve ragazzi potete aiutarmi con questo codice?
Non mi funziona? Piu specificamente durante l'elaborazione non mi riempe l'array $rss_channel_info e il primo elemento (ossia l'indice 0) dell' array $rss_items

Codice sorgente - presumibilmente Php

  1. <?php
  2.  
  3.  define("XML_RSS", 0);
  4.  define("XML_CHANNEL", 1);
  5.  define("XML_ITEM", 2);
  6.  
  7.  // function xml_start_element_handler
  8.  function xml_start_element_handler($xml_parser, $element_name, $attributes) {
  9.  
  10.   if($element_name=="CHANNEL")
  11.         $GLOBALS["xml_current_node"]=XML_CHANNEL;
  12.   else if($element_name=="ITEM")
  13.         $GLOBALS["xml_current_node"]=XML_ITEM;
  14.  
  15.   $GLOBALS["xml_current_tag_state"]=$element_name;
  16.  }
  17.  
  18.  // function xml_end_element_handler
  19.  function xml_end_element_handler($xml_parser, $element_name) {
  20.  
  21.   if($element_name=="ITEM")
  22.         $GLOBALS["xml_items_counter"]++;
  23.  }
  24.  
  25.  // function xml_character_data_handler
  26.  function xml_character_data_handler($xml_parser, $data) {
  27.  
  28.   switch($GLOBALS["xml_current_node"]) {
  29.    case XML_ITEM:
  30.  
  31.         if($GLOBALS["xml_current_tag_state"]=="TITLE")
  32.                 $GLOBALS["rss_items"][$GLOBALS["xml_items_counter"]]["title"]=$data;
  33.         else if($GLOBALS["xml_current_tag_state"]=="DESCRIPTION")
  34.                 $GLOBALS["rss_items"][$GLOBALS["xml_items_counter"]]["description"]=$data;
  35.         else if($GLOBALS["xml_current_tag_state"]=="LINK")
  36.                 $GLOBALS["rss_items"][$GLOBALS["xml_items_counter"]]["link"]=$data;
  37.  
  38.         break;
  39.    case XML_CHANNEL:
  40.  
  41.         if($GLOBALS["xml_current_tag_state"]=="TITLE")
  42.                 $GLOBALS["rss_channel_info"]["title"]=$data;
  43.         else if($GLOBALS["xml_current_tag_state"]=="DESCRIPTION")
  44.                 $GLOBALS["rss_channel_info"]["description"]=$data;
  45.         else if($GLOBALS["xml_current_tag_state"]=="LANGUAGE")
  46.                 $GLOBALS["rss_channel_info"]["language"]=$data;
  47.         break;
  48.   }
  49.  }
  50.  
  51.  $file_name="./rss.xml";
  52.  $xml_current_tag_state="";
  53.  $xml_current_node=-1;
  54.  $xml_items_counter=0;
  55.  $rss_channel_info=array();
  56.  $rss_items=array();
  57.  
  58.  
  59.  $xml_parser=xml_parser_create("utf-8");
  60.  xml_set_element_handler($xml_parser, "xml_start_element_handler", "xml_end_element_handler");
  61. er, "xml_character_data_handler");
  62.  
  63.  if(!$fp=fopen($file_name, "r")) die("Impossibile aprire il file RSS.");
  64.  while($data=fread($fp, 5120)) if(!xml_parse($xml_parser, $data, feof($fp))) die("Impossibile analizzare il file RSS.");
  65.  fclose($fp);
  66.  xml_parser_free($xml_parser);
  67.  
  68.  print_r($rss_channel_info);
  69.  print("<hr>");
  70.  print_r($rss_items);
  71.  
  72. ?>


PM Quote
Avatar
joker_ (Ex-Member)
Pro


Messaggi: 182
Iscritto: 14/02/2005

Segnala al moderatore
Postato alle 14:59
Martedì, 17/01/2006

PM Quote
Avatar
andriy88 (Ex-Member)
Pro


Messaggi: 118
Iscritto: 04/11/2005

Segnala al moderatore
Postato alle 21:36
Mercoledì, 18/01/2006
guarda, non so cosa hai fatto, ma ho fatto solamente compia e incola del script che hai postato e mi funziona tutto...
Mi analizza i file...


---
PM Quote
Avatar
andriy88 (Ex-Member)
Pro


Messaggi: 118
Iscritto: 04/11/2005

Segnala al moderatore
Postato alle 21:39
Mercoledì, 18/01/2006
Ti da qualche errore?? Quale??

Il file rss.xml si trova nella stessa cartella del file php contente il codice php che hai postato?? Se no, i 2 file devono trovarsi nella stessa cartella ammeno che non modifichi lo script..

Fammi sapere..


---
PM Quote
Avatar
andriy88 (Ex-Member)
Pro


Messaggi: 118
Iscritto: 04/11/2005

Segnala al moderatore
Postato alle 21:45
Mercoledì, 18/01/2006
Mi ? venuta adesso questa domandina..:asd::asd:

Ma nel file php.ini del tuo server php ? attiva la estensione per xml??

Se sta cos?..
Codice sorgente - presumibilmente Plain Text

  1. ;extension=php_xmlrpc.dll


Togli il punto e virgola all'inizio e assicurati che ? presente e installata la dll "php_xmlrpc.dll", di solito deve stare nella cartella da te indicata nel file php.ini
Codice sorgente - presumibilmente Plain Text

  1. extension_dir = "C:\PHP\ext\"


(vedi che a te la cartella sicuramente si chiamer? diversamente perch? il mio php.ini ? tutto riscritto e modificato..:D


---
PM Quote
Avatar
andriy88 (Ex-Member)
Pro


Messaggi: 118
Iscritto: 04/11/2005

Segnala al moderatore
Postato alle 21:49
Mercoledì, 18/01/2006
Testo quotato

Postato originariamente da andriy88:
i 2 file devono trovarsi nella stessa cartella ammeno che non modifichi lo script..



Codice sorgente - presumibilmente Plain Text

  1. $file_name="./rss.xml";


scusa, il file php pu? trovarsi in qualsiasi cartella del sito, invece il file xml deve trovarsi nella root principale del sito..
Se voi che il file xml deve trovarsi nella stessa cartella del file php fai cos?:
Codice sorgente - presumibilmente Plain Text

  1. $file_name="rss.xml";




ByeBye


---
PM Quote
Avatar
joker_ (Ex-Member)
Pro


Messaggi: 182
Iscritto: 14/02/2005

Segnala al moderatore
Postato alle 15:23
Giovedì, 19/01/2006
io ho specificato l'errore! Il file mi viene analizzato! Per non mi viene riempita l'array rss_channel_info e il primo elemento dell'array rss_items

PM Quote
Avatar
andriy88 (Ex-Member)
Pro


Messaggi: 118
Iscritto: 04/11/2005

Segnala al moderatore
Postato alle 15:31
Giovedì, 19/01/2006
Testo quotato

Postato originariamente da joker_:

io ho specificato l'errore! Il file mi viene analizzato! Per non mi viene riempita l'array rss_channel_info e il primo elemento dell'array rss_items



E' io ti dico che ho fatto solo copia e incola del codice che hai postato e mi funziona tutto corettamente, riempie gli array ecc...
Ti ho detto cosa devi fare, controlla se ? attiva estensione per file xml

Ultima modifica effettuata da andriy88 il 19/01/2006 alle 15:32


---
PM Quote
Avatar
joker_ (Ex-Member)
Pro


Messaggi: 182
Iscritto: 14/02/2005

Segnala al moderatore
Postato alle 15:35
Giovedì, 19/01/2006
Mettiamo in chiaro un paio di cose.

1) L'estensione xmlrpc non sta ad indicare l'estensione per abilitare il parse xml (SAX) ma sta ad indicare l'intero set di funzioni per l'xml RPC (Remote Procedure Calls). Se non sai cosa ?, documentati.

2) E' un semplice file xml senza entit? e senza dtd. Non ho usato niente di chi sa ch?, sono semplici funzioni di base, quindi non penso che sia un errore da parte mia ma un anomalia del php.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo