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:
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>
Mi ritorna:
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
Ed è quello che voglio. Ma ci sono file xml che sono composti in modo diverso come ad esempio questo:
codice:
<item>
    <title>Borse, Piazza Affari in rialzo. Male Wall Street e Francoforte. Euro giù</title>
    <link>http://feeds.ilsole24ore.com/...</link>
     <description>&lt;b&gt; &lt;font color="#000000"&gt;Sul mercato obbligazionario lo spread BTp-Bund si conferma sopra i 130 punti...&lt;/font&gt;</description>
<pubDate>Tue, 26 May 2015 14:15:14 GMT</pubDate>
In questo caso il programma mi ritorna:
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
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.
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.