- Home
- Categorie
- Coding e Sistemistica
- Coding
- Leggere un xml "particolare"
-
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!
-
Ciao
puoi benissimo leggere e "trattare" questo XML con qualsiasi metodo supportato da PHP, a cominciare dal semplice SimpleXML
-
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 4Warning: 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 />
-
In realtà i problemi, secondo me, sono due:
- manca lo spazio qui: data="18/12/2009 09:20:35"categoria="Internazionale" (tra le virgolette della data e "categoria")
- manca lo spazio alla fine del tag "news" prima dello slash (invece di link="http://www.xxxxx.it/news/dett.php?id=26855"/> dovrebbe essere link="http://www.xxxxx.it/news/dett.php?id=26855" />)
Prova a risolvere queste cose (all'inizio magari a manina) e facci sapere sa va meglio
-
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 "°" , come posso fare per ovviare a questi problemi?
-
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°', '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]
-
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!