• User Attivo

    Leggere un xml "particolare"

    Ciao a tutti, c'è un metodo per leggere un xml simile ?

    <?xml version="1.0" encoding="UTF-8"?>
    
    <notizie>
    <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica live a Zagabria" anteprima="Il tour della piu famosa band metal al mondo non fara tappa in Italia, la data piu vicina e in Croazia" testo="Dopo l annuncio del concerto italiano degli AC/DC, un altro grande appuntamento per i rockers piu scatenati con l esibizione live dei Metallica che s" immagine="http://www.xxxxx.it/assets/images/140x70_metallica2004.jpg" link="http://www.xxxxx.it/news/dett.php?id=26855"/>
    
    <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica live a Zagabria" anteprima="Il tour della piu famosa band metal al mondo non fara tappa in Italia, la data piu vicina e in Croazia" testo="Dopo l annuncio del concerto italiano degli AC/DC, un altro grande appuntamento per i rockers piu scatenati con l esibizione live dei Metallica che s" immagine="http://www.xxxxx.it/assets/images/140x70_metallica2004.jpg" link="http://www.xxxxx.it/news/dett.php?id=26855"/>
    
    <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica live a Zagabria" anteprima="Il tour della piu famosa band metal al mondo non fara tappa in Italia, la data piu vicina e in Croazia" testo="Dopo l annuncio del concerto italiano degli AC/DC, un altro grande appuntamento per i rockers piu scatenati con l esibizione live dei Metallica che s" immagine="http://www.xxxxx.it/assets/images/140x70_metallica2004.jpg" link="http://www.xxxxx.it/news/dett.php?id=26855"/>
     
     </notizie>
    

    Grazie!


  • User Attivo

    Ciao
    puoi benissimo leggere e "trattare" questo XML con qualsiasi metodo supportato da PHP, a cominciare dal semplice SimpleXML


  • User Attivo

    Ciao, sto provando come mi hai suggerito ma già al caricare xml mi da errore, questo è il codice php [PHP]<?php

    $xml = simplexml_load_file('rss.xml');
       print_r($xml);
    

    ?>[/PHP] e questo è l'errore generato
    [PHP]
    Warning: simplexml_load_file() [function.simplexml-load-file]: rss.xml:4: parser error : attributes construct error in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica2 li in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: rss.xml:4: parser error : Couldn't find end of Start Tag news line 4 in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica2 li in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: rss.xml:6: parser error : attributes construct error in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica3 li in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: rss.xml:6: parser error : Couldn't find end of Start Tag news line 6 in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica3 li in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: rss.xml:8: parser error : attributes construct error in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica4 li in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: rss.xml:8: parser error : Couldn't find end of Start Tag news line 8 in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: <news data="18/12/2009 09:20:35"categoria="Internazionale" titolo="Metallica4 li in /htdocs/xxxxxx2009/xml_reader.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /htdocs/xxxxxx2009/xml_reader.php on line 4[/PHP]

    perchè non c'è il tag di chiusura alla fine, per questo non capivo come si potesse leggere un xml simile, solo <notizie> ha la chiusura in </notizie> mentre news comincia con <news e finisce con />


  • User Attivo

    In realtà i problemi, secondo me, sono due:

    Prova a risolvere queste cose (all'inizio magari a manina) e facci sapere sa va meglio


  • User Attivo

    Perfetto!
    Adesso me lo legge! Ho fatto un ciclo per leggere tutto
    [PHP]foreach ($xml->children() as $second_gen) {
    echo '<b>DATA </b>' . $second_gen['data'].'<br>';
    echo '<b>TITOLO </b>' . $second_gen['titolo'].'<br>';
    echo '<b>ANTEPRIMA </b>' . $second_gen['anteprima'].'<br>';
    echo '<b>TESTO</b>' . $second_gen['testo'].'<br>';
    echo '<b>IMMAGINE</b><img src="'. $second_gen['immagine'].'" width="140" height="70" /><br>';
    echo '<b>CATEGORIA </b>' . $second_gen['categoria'].'<br><br>';
    }[/PHP]

    Adesso ho preso il file originale da leggere e ha il problema della chiusura /> che non ha uno spazio, in più il testo è scritto direttamente in html e quindi mi genera un errore quando leggo i caratteri speciali tipo "&deg" , come posso fare per ovviare a questi problemi?


  • User Attivo

    Ciao!
    Ecco il mio script finale! Non volendo richiedere una nuova revisione del file xml ho pensato di aprire il file originale e dopo aver analizzato il contenuto di scriverlo in un altro file che a questo punto sarà perfetto per la lettura. il mio unico doppio è nella conversione dei caratteri speciali... c'è una scorciatoia oppure se aggiungono un nuovo caso mi si incasina ancora la lettura ?

    [PHP]
    //apro il file xml
    $var=fopen("xxxxx/xxxxxnews.xml","r");
    //leggo il file
    $leggi=fread($var,filesize("xxxxx/xxxxxnews.xml"));

    //sostituisco i caratteri html
    $leggi = str_replace('°', ' ', $leggi);
    $leggi = str_replace('&', 'e', $leggi);
    $leggi = str_replace('>', '>', $leggi);
    $leggi = str_replace('"', '-', $leggi);
    $leggi = str_replace('n&deg;', 'n', $leggi);

    //elimino il problema della chiusura del tag
    $leggi = str_replace('"/>', '" />', $leggi);

    //chiudo il file
    fclose($var);

    //apro il file che conterrà il nuovo codice
    $var2=fopen("ok.xml","w");
    //scrivo il nuovo codice
    fwrite($var2, "$leggi");

    //chiudo il file
    fclose($var2);

    //leggo il file sistemato
    $leggere="ok.xml";

    $xml = simplexml_load_file($leggere);
    

    foreach ($xml->children() as $second_gen) {
    echo '<b>DATA </b>' . $second_gen['data'].'<br>';
    echo '<b>TITOLO </b>' . $second_gen['titolo'].'<br>';
    echo '<b>ANTEPRIMA </b>' . $second_gen['anteprima'].'<br>';
    echo '<b>TESTO</b>' . $second_gen['testo'].'<br>';
    echo '<b>IMMAGINE</b><img src="'. $second_gen['immagine'].'" width="140" height="70" /><br>';
    echo '<b>CATEGORIA </b>' . $second_gen['categoria'].'<br><br>';
    }
    [/PHP]


  • User Attivo

    A chi potesse servire incollo la funzione per convertire tutto il testo in formato xml valido e riconoscibile da simplexml

    [PHP] <?
    function xmlEntities($str)
    {
    $xml = array('"','&','&','<','>',' ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','­','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ');
    $html = array('"','&','&','<','>',' ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','­','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ');
    $str = str_replace($html,$xml,$str);
    $str = str_ireplace($html,$xml,$str);
    return $str;
    }
    ?> [/PHP]

    buon lavoro a tutti!