2012-02-17 4 views
0

Это стало настоящей болью на моей стороне.Исключение несогласованного тега при разборе XML

URL, я пытаюсь разобрать это http://torrentz.eu/feed_verifiedP?q=ubuntu

Вот короткая версия XML:

<?xml version="1.0"?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
<channel> 
    <title>Torrentz - ubuntu</title> 
    <link>http://torrentz.eu/verified?q=ubuntu</link> 
    <description>ubuntu search</description> 
    <language>en-us</language> 
    <atom:link href="http://torrentz.eu/feed_verifiedP?q=ubuntu" rel="self" type="application/rss+xml" /> 
    <item> 
    <title>ubuntu 11 10 desktop i386 iso</title> 
    <link>http://torrentz.eu/8ac3731ad4b039c05393b5404afa6e7397810b41</link> 
    <guid>http://torrentz.eu/8ac3731ad4b039c05393b5404afa6e7397810b41</guid> 
    <pubDate>Thu, 13 Oct 2011 15:02:06 +0000</pubDate> 
    <category>apps linux applications os software</category> 
    <description>Size: 695 MB Seeds: 4,613 Peers: 161 Hash: 8ac3731ad4b039c05393b5404afa6e7397810b41</description> 
    </item> 
</channel> 
</rss> 

Мой код:

SAXParserFactory spf = SAXParserFactory.newInstance(); 
    SAXParser sp = spf.newSAXParser(); 
    XMLReader xr = sp.getXMLReader(); 

    //Get Torrents 
    XMLTorrentsRSSHandler torrentsHandler = new XMLTorrentsRSSHandler(); 
    xr.setContentHandler(torrentsHandler); 
    InputStream in = url.openStream(); 
    xr.parse(new InputSource(in)); 
    XMLTorrentsRSSParsedDataSet parsedTorrentsDataSet = torrentsHandler.getParsedData(); 

я получаю это исключение:

org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 53: mismatched tag 

Почему флип меня так мучает !?

EDIT: Этот метод работал нормально до сегодняшнего дня. Возможно, веб-сайт изменился, но где этот яркий тег flippin?

+0

Вы можете попробовать DomParsing вместо саксофона. Проверьте эту ссылку http://www.coderanch.com/t/489237/XML/Dom-Parser-special-character – kosa

+0

Я знаю, что вы сказали, что он только начал работать снова, - но вы когда-нибудь выяснили, в чем проблема? ? – Dave

ответ

0

Почему у вас есть Гармония на пути к строительству? Ваш код отлично работает со встроенным SAXParser в JDK7u3 от Oracle. Если нет смысла использовать реализацию гармонии, вы должны вернуться к стандартному.

TestCase форма:

import java.io.IOException; 
import java.io.StringReader; 

import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 

import org.xml.sax.Attributes; 
import org.xml.sax.ContentHandler; 
import org.xml.sax.InputSource; 
import org.xml.sax.SAXException; 
import org.xml.sax.XMLReader; 
import org.xml.sax.helpers.DefaultHandler; 

class Scratch { 
    public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException { 
     final String document = "<?xml version=\"1.0\"?>\n" + 
       "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n" + 
       " <channel>\n" + 
       " <title>Torrentz - ubuntu</title>\n" + 
       " <link>http://torrentz.eu/verified?q=ubuntu</link>\n" + 
       " <description>ubuntu search</description>\n" + 
       " <language>en-us</language>\n" + 
       " <atom:link href=\"http://torrentz.eu/feed_verifiedP?q=ubuntu\" rel=\"self\" type=\"application/rss+xml\" />\n" + 
       " <item>\n" + 
       "  <title>ubuntu 11 10 desktop i386 iso</title>\n" + 
       "  <link>http://torrentz.eu/8ac3731ad4b039c05393b5404afa6e7397810b41</link>\n" + 
       "  <guid>http://torrentz.eu/8ac3731ad4b039c05393b5404afa6e7397810b41</guid>\n" + 
       "  <pubDate>Thu, 13 Oct 2011 15:02:06 +0000</pubDate>\n" + 
       "  <category>apps linux applications os software</category>\n" + 
       "  <description>Size: 695 MB Seeds: 4,613 Peers: 161 Hash: 8ac3731ad4b039c05393b5404afa6e7397810b41</description>\n" + 
       " </item>\n" + 
       " </channel>\n" + 
       "</rss>\n"; 

     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 

     ContentHandler torrentsHandler = new DefaultHandler() { 
      @Override 
      public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 
       System.out.printf("%s/%s/%s\n", uri, localName, qName); 
      } 
     }; 
     xr.setContentHandler(torrentsHandler); 
     xr.parse(new InputSource(new StringReader(document))); 
    } 
} 
+0

Вот мои импортные: import java.io.InputStream; import java.net.URL; импорт javax.xml.parsers.SAXParser; импорт javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; Я не знаю, откуда приходит Гармония! – ZiGi

+0

Его реализация Harmony ** **, а не импорт, вот в чем проблема. Вы должны иметь их на пути к классу, или вы используете странную JVM? 'java -version' и проверить свой путь к классам? – FauxFaux

+0

О, я смущен теперь LOL. Это приложение для Android. В течение двух месяцев он работал нормально, и сегодня он прекратил работать. Я уверен, что канал RSS был изменен, но я не знаю, что вызывает проблему. Позвольте мне взглянуть на мои classpaths – ZiGi

Смежные вопросы