Ciao a tutti.
Scusatemi ragazzi se vi disturbo ancora, ma non riesco a capire come risolvere questo problema.
Mi trovo a dover catturare i dati dei file xml/rss delle maggior testate giornalistiche italiane, sui vari canali (twitter, facebook, sito web...).
Da stamattina il mio programma su tutte le pagine twitter crea un eccezione che non riesco a risolvere.
Questo è un esempio di file xml di un canale twitter:
codice:
<rss version="2.0">
<channel>
<title>Queryfeed | from:@ilG_arts</title>
<ttl>10</ttl>
<description>
Queryfeed searches in Twitter, Google+ and gives you a nice RSS. Enjoy!
</description>
<generator>queryfeed.net (clojure 1.6.0)</generator>
<webmaster>ivan@grishaev.me</webmaster>
<item>
<link>
http://twitter.com/twitter/status/607152473602551808
</link>
<guid>
http://twitter.com/twitter/status/607152473602551808
</guid>
<title>ilGiornale Arts @ilG_arts</title>
<category>blog</category>
<category>ilG</category>
<pubDate>Sat, 06 Jun 2015 11:50:04 +0000</pubDate>
<description>
[Paolo Giordano] Le pagelle di Amici 14 <a href="http://bit.ly/1IjXHNN">bit.ly/1IjXHNN</a> <a href="https://twitter.com/hashtag/blog">#blog</a> <a href="https://twitter.com/hashtag/ilG">#ilG</a>
</description>
</item>
<item>
<link>
http://twitter.com/twitter/status/607135733967552512
</link>
<guid>
http://twitter.com/twitter/status/607135733967552512
</guid>
<title>ilGiornale Arts @ilG_arts</title>
<category>cultura</category>
<category>ilG</category>
<pubDate>Sat, 06 Jun 2015 10:43:33 +0000</pubDate>
<description>
Quei geniali critici anni '30 che "scoprirono" il cinema <a href="http://bit.ly/1ARdbsR">bit.ly/1ARdbsR</a> <a href="https://twitter.com/hashtag/cultura">#cultura</a> <a href="https://twitter.com/hashtag/ilG">#ilG</a>
</description>
</item>
</channel>
</rss>
Questo è il pezzo di codice in cui mi si crea l'eccezione:
codice:
RssFeed r=new RssFeed();
Vector<RssFeed> list=new Vector<RssFeed>();
list=r.getList();
Iterator<RssFeed> it = list.iterator();
System.out.println("Inizio cattura dati: "+dataStr+". Attendere.");
while (it.hasNext()) {
try{
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
DefaultHandler handler = new myHandler();
URL URL = new URL(r.getLink());
InputStream ism = URL.openStream();
Reader reader = new InputStreamReader(ism,"UTF-8");
InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");
parser.parse(is, handler);/* <----questo è il comando che mi genera l'eccezione*/
/*Scrivo i post trovati su un db*/
((myHandler) handler).insertPostDb(r.getId());
}catch (Exception e){
e.printStackTrace();
}
Questa è l'eccezione che viene stampata nella console:
codice:
org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 3; Il tipo di elemento "hr" deve terminare con la corrispondente tag finale "</hr>".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
Ho supposto (ma molto probabilmente sbaglio) che invece di leggere il tag <a href> in un qualche modo mi legge solo <hr>, ma non capisco il perchè!
Fino a ieri tutto funzionava e andata. Sugli altri xml/rss dei canali diversi da twitter non ho assolutamente problema.
Grazie a chiunque mi risponderà!