Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Parsing del XML

  1. #1

    Parsing del XML

    Ciao ragazzi.

    Sto sclerando nel disperato tentativo di crearmi un lettore di feed RSS senza utilizzare le risorse che trovo online.
    Per quanto il fine sia propedeutico, mi sto scervellando da un paio di pomeriggi, ed ora mi sono deciso di postare per risolvere questo (piccolo??) problema.

    Allora, ho un file XML composto (più o meno) come segue:

    codice:
    ## nomefeed_lingua.xml
    
    <?xml version="1.0" encoding="iso-8859-1" ?> 
    
    <root>
      <child>
    	  <tag1>xxxxx</tag1>
      	  <tag2>xxxxx</tag2>
    	  <tag3>xxxxx</tag3> 
    	  <tag4>xxxxx</tag4> 
    	  <tag5>xxxxx</tag5> 
    	  <tag6>xxxxx</tag6> 
    	  <tag7>xxxxx</tag7> 
    	  <tag8>xxxxx</tag8> 
    	  <tag9 value="valore">xxxxx</tag9> 
    
    	  <item>
    	  	<link>http://www.sito.it</link> 
    		<title>
    		<![CDATA[ 
    			Titolo articolo
    		]]> 
    		</title>
    		<description>
    		<![CDATA[ 
     			Lorem Ipsum eccetera eccetera.
      		]]> 
      		</description>
      		<author>Autore</author> 
      		<category domain="http://www.sito.it/dominio/">Categoria</category> 
      		<pubDate>dd-mm-aaaa HH:ii:ss</pubDate> 
      	</item>
      </child>
    </root>

    Codice PHP:
    // pagina PHP che legge il file XML

    <?php

    $cartella_feed 
    "cartella/del/feed";

    $attivi opendir($cartella_feed);
    $quanti_feed 0;

           while (
    $file readdir($attivi)) {
            
                 list (
    $nome,$estensione) = explode("."$file);
                       if (
    $estensione == "xml") {

                
    // conta i feed presenti nella cartella        
                
    $quanti_feed++;        
                         list (
    $nome_feed,$lingua) = explode("_"$nome);
                         
                         if (
    $lingua == "it") { $intestazione ucfirst($nome_feed)." ::: Lingua: Italiano"; }
                         else { 
    $intestazione ucfirst($nome_feed)." ::: Lingua: Inglese"; }
                        
    // mostra il nome dei feed
                        
                        
    echo "[$quanti_feed$intestazione<hr />";
                        
                        
    // inizio a scorrere il file XML
                        
    $parser xml_parser_create();
                        
    $data implode(""file("$cartella_feed/$file"));
                        
    // metto tutti i TAG in un array
                        
    xml_parse_into_struct($parser$data, &$d_ar, &$i_ar);
                        
    // libero memoria
                        
    xml_parser_free($parser);
                        
                        
    // scorro l'array che contiene i vari figli del tag di root    
                        
    foreach($d_ar as $element) {
                            
                            
    // stessa cosa per separare le varie proprietà di ogni tag
                            
    foreach ($element as $tag) {
                                
                                
    // PARTE INCRIMINATA
                                
    $item $tag['item'];
                                
    $link $tag['link'];
                                
    $title $tag['title'];
                                
    // eccetera - le variabili così definite le vorrei passare ad
                                // un Javascript o a Flash, per il lettore di FEED 
                                // vero e proprio
                                // FINE PARTE INCRIMINATA
                                
                                    
                                
    }
                        } 
                        
                        
    echo 
    "<hr />";
                        
                       }
            }
    closedir($attivi);

    ?>

    La porzione di codice che è segnata come "INCRIMINATA" è quella per cui vi chiedo aiuto.
    Sostanzialmente, non riesco ad accedere all'array che contiene le varie parti del XML e non riesco a capire dove sbaglio.

    C'è qualcuno che mi può dare una manina???
    Grazie
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  2. #2
    Scusate, per via del copia ed incolla, ho scritto male proprio la porzione di codice INCRIMINATA.

    La riposto qui sotto.

    Codice PHP:
    // errata corrige

    // PARTE INCRIMINATA 

    $item $tag['item']; 

    $link $item['link']; 
    $title $item['title']; 

    // FINE PARTE INCRIMINATA 
    Scusate l'errore.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    UP!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    UP

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Ciao,
    Dai un'occhiata alle librerie DOM Document di php.

    Io le uso: sono molto semplici.

    ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  6. #6
    Ho dato un occhiata ma non ho trovato degli esempi "illuminatori". :master:

    Mi potresti dire come posso accedere ad un nodo particolare nodo?
    Tipo, come faccio ad accedere (vedi l'XML riportato) al valore contenuto in ROOT => CHILD => ITEM => LINK ?
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Ciao,
    è molto semplice.
    Conosci le regole del DOM?

    Quarda:
    $dom->getElementsByTagName("LINK ");


    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.