Salve a tutti.
Ho creato un piccolo progetto Java che legge una serie di link rss, ne apre l'url e scorre il file xml per catturare i post con le notizie e le varie informazioni.
Il programma funziona e gira bene. Ho solo un problema con pochi file xml.
Sto usando il parse Sax e questo è un pezzo della classe che "cattura i dati":
codice:public class myHandler extends DefaultHandler { private Post post; private String temp=""; private ArrayList<Post> postList=new ArrayList<Post>(); private boolean title=false,description=false,link=false, pubDate=false,item=false,category=false; private ReplaceChar r=new ReplaceChar(); /** Metodo che legge i tag di apertura '<'**/ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { temp = ""; if(qName.equalsIgnoreCase("item")){ post=new Post(); item=true; }else if (qName.equalsIgnoreCase("title")) { title=true; }else if (qName.equalsIgnoreCase("description")) { description=true; }else if (qName.equalsIgnoreCase("link")) { link=true; }else if (qName.equalsIgnoreCase("pubDate")) { pubDate=true; }else if(qName.equalsIgnoreCase("category")){ category=true; } } /** Metodo per il reperimento delle informazioni infra tag*/ public void characters(char ch[], int start, int length) throws SAXException { temp= new String(ch,start,length); /*Passo la stringa per la pulizia dai caratteri speciali*/ temp=r.change(temp); if(item==true){ if(title){ post.setTitle(temp); title=false; }else if(description){ post.setDescr(temp); description=false; temp=temp.replaceAll("[<](/)?a[^>]*[>]", " "); temp=temp.replaceAll("[<](/)?img[^>]*[>]", ""); post.setText(temp); }else if(link){ post.setLink(temp); link=false; }else if(pubDate){ post.setPubDate(temp); pubDate=false; }else if(category){ post.setCat(temp); category=false; } } } /** Metodo che legge i tag di chiusura '<'**/ public void endElement(String uri, String localName, String qName) throws SAXException { if(qName.equals("item")){ postList.add(post); item=false; } }
In sostanza un item come questo:
Mi ritorna:codice:<title><![CDATA[ La sede della Presidenza della Repubblica diventa un nuovo, straordinario, museo...]]></title> <link>http://www.facebook.com/corrieredellasera/posts/10153128020747530</link> <description><![CDATA[La sede della Presidenza della Repubblica diventa un nuovo, straordinario, museo pubblico, assecondando il desiderio di Mattarella di far diventare il Quirinale «la casa degli Italiani»<br/><br/><a href="http://l.facebook.com....>Link</a>]]></description> <pubDate>Tue, 26 May 2015 14:30:01 +0100</pubDate> <author>Corriere della Sera</author> <dc:creator>Corriere della Sera</dc:creator> </item>
Ed è quello che voglio. Ma ci sono file xml che sono composti in modo diverso come ad esempio questo:codice:Title:La sede della Presidenza della Repubblica diventa un nuovo, straordinario, museo... Description:La sede della Presidenza della Repubblica diventa un nuovo, straordinario, museo pubblico, assecondando il desiderio di Mattarella di far diventare il Quirinale «la casa degli Italiani» Link pubDate:Tue, 26 May 2015 14:30:01 +0100
In questo caso il programma mi ritorna:codice:<item> <title>Borse, Piazza Affari in rialzo. Male Wall Street e Francoforte. Euro giù</title> <link>http://feeds.ilsole24ore.com/...</link> <description><b> <font color="#000000">Sul mercato obbligazionario lo spread BTp-Bund si conferma sopra i 130 punti...</font></description> <pubDate>Tue, 26 May 2015 14:15:14 GMT</pubDate>
Pensavo che fosse un problema legato alla decodifica dei caratteri speciali, quindi prima di passare il file xml al parse Sax, lo decodifico con i caratteri UTF-8. Ma non ho risolto niente.codice:Title:Borse, Piazza Affari in rialzo. Male Wall Street e Francoforte. Euro giù Link:http://feeds.ilsole24ore.com/... Description:< PubDate:Tue, 26 May 2015 14:15:14 GMT
Non so più che cosa fare vi prego datemi un consiglio perchè non mi sembra di aver trovato nulla sui vari forum per risolvere il mio grattacapo.

Rispondi quotando
