Accesso agli elementi <![CDATA[ ... ]]> di un file XML con SimpleXML e PHP

Discussione in 'PHP' iniziata da otto9due, 25 Aprile 2015.

  1. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Ho un rss di un sito web che ha inserito all'interno dell'elemento <![CDATA[ ... ]]> una serie di informazioni, es prezzo di un prodotto, sconto, ecc.

    Come faccio ad entrare nel <![CDATA[ ... ]]> e selezionare solamente le informazioni di cui ho bisogno?
    E' possibile?

    Grazie anticipatamente.
     
  2. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Non avendo avuto risposte, sto tentando di accedere a <![CDATA[ ... ]]> tramite DOM.. Tutto quello che c'è al suo interno è un attributo? E come ci accedo..
    Questa ad esempio è l'alberatura di un prodotto amazon, io avrei necessità di accedere ai dati contenuti in <![CDATA[ ... ]]> :
    HTML:
    <item>
    <title>
    #1: PlayStation 4 - Controller Dualshock 4 Wireless, Jet Black per PS4
    </title>
    <guid isPermaLink="false">top-sellers_videogames_videogames_B00BF6D63Q</guid>
    <link>
    http://www.amazon.it/PlayStation-Controller-Dualshock-Wireless-Black/dp/B00BF6D63Q/ref=pd_zg_rss_ts_vg_videogames_1?ie=UTF8&tag=Inserisci_il_Tuo_ID_Affiliato_Qui
    </link>
    <pubDate>Mon, 27 Apr 2015 08:00:43 GMT</pubDate>
    <description>
    <![CDATA[
    <div style="float:left;"><a class="url" href="http://www.amazon.it/PlayStation-Controller-Dualshock-Wireless-Black/dp/B00BF6D63Q/ref=pd_zg_rss_ts_vg_videogames_1?ie=UTF8&tag=Inserisci_il_Tuo_ID_Affiliato_Qui"><img src="http://ecx.images-amazon.com/images/I/41U9bvdk5nL._SL160_.jpg" alt="PlayStation 4" border="0" hspace="0" vspace="0" /></a></div><span class="riRssTitle"><a href="http://www.amazon.it/PlayStation-Controller-Dualshock-Wireless-Black/dp/B00BF6D63Q/ref=pd_zg_rss_ts_vg_videogames_1?ie=UTF8&tag=Inserisci_il_Tuo_ID_Affiliato_Qui">PlayStation 4 - Controller Dualshock 4 Wireless, Jet Black per PS4</a></span> <br /><span class="riRssContributor">di Sony</span> <br /><b>Piattaforma:</b> PlayStation 4<br /> <img src="http://g-ecx.images-amazon.com/images/G/29/detail/stars-4-5._V192038504_.gif" width="64" height="12" border="0" style="margin: 0; padding: 0;"/>(219)<br /><br /><a href="http://www.amazon.it/PlayStation-Controller-Dualshock-Wireless-Black/dp/B00BF6D63Q/ref=pd_zg_rss_ts_vg_videogames_1?ie=UTF8&tag=Inserisci_il_Tuo_ID_Affiliato_Qui">Acquista: </a> <strike>EUR 69,99</strike> <font color="#990000"><b>EUR 52,98</b></font> <br /><a href="http://www.amazon.it/gp/offer-listing/B00BF6D63Q/ref=pd_zg_rss_ts_vg_videogames_1?ie=UTF8&condition=all&tag=Inserisci_il_Tuo_ID_Affiliato_Qui">56 nuovo e usato</a> da <span class="price">EUR 52,98</span><br /><br />(Visita <a href="http://www.amazon.it/gp/bestsellers/videogames/ref=pd_zg_rss_ts_vg_videogames_1?ie=UTF8&tag=Inserisci_il_Tuo_ID_Affiliato_Qui">Bestseller in Videogiochi</a> l'elenco delle informazioni autorevoli sulla classifica attuale di questo prodotto.)
    ]]>
    </description>
    </item>
    
    fino a <title> ci sono... Il problema viene dopo..
     
    Ultima modifica: 27 Aprile 2015
  3. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Con questo codice pare mi parsa qualcosa.. ma non capisco bene cosa.. perchè non trovo tutti i dati che invece dovrebbero esserci nel tag description.. Potete anche testarlo voi basta caricarlo da qualche parte..

    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>
    <body>

    <?php
    $html 
    "";
    $url "http://www.amazon.it/rss/bestsellers/videogames/";
    $xml simplexml_load_file($url);

    foreach(
    $xml->channel->item as $articolo) {
        
        
    $ns $articolo->getNamespaces(true);
        
    $dc $articolo->children($ns['dc']);
        
        
    $title $articolo->title;
        
    $link $articolo->link;
        
    $descriptions $articolo->description;
        
    $pubDate $articolo->pubDate;
        
    $creatore $dc->creator;
        
        
    $desc_conts $descriptions->xpath('//child::text()');
        
            foreach(
    $desc_conts as $desc_cont) {
                
                
    $test $desc_cont->xpath('//child::text()[1]');
                
    var_dump($test);
                die();
                        
            }
                
                
                    
    $html .= "<a href='$link'><h3>$title</h3></a>";
                    
    $html .= "$descriptions";
                    
    $html .= "Scritto da: $creatore";
                    
    $html .= "<br />$pubDate<hr />";
                    
    $html .= "<br />$prezzop<hr />";
                    
    $html .= "<br />$test<hr />";
                
            
    }
    echo 
    $html;
    ?>
    </body>
    </html>
    Cosa sta parsando??? Dove sbaglio??
    P.S. non badate ad alcuni tag in più es: creator perchè mi servivano per un altro xml :p
     
    Ultima modifica: 29 Aprile 2015
Sto caricando...

Condividi questa Pagina