2012-02-17 14 views
0

これは私の背中に本当の痛みとなっています。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(); 

私が解析しようとしているURLは、ここで

http://torrentz.eu/feed_verifiedP?q=ubuntuは、XMLの短いバージョンですです

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

フリップはなぜこのように私を苦しめるのですか?

編集:このメソッドは今日まで正常に動作していました。おそらくウェブサイトは変わったのでしょうか?このような不一致のタグはどこにありますか?

+0

あなたはサックスの代わりにDomParsingてみてください。このリンクをチェックしてくださいhttp://www.coderanch.com/t/489237/XML/Dom-Parser-special-character – kosa

+0

あなたはそれがちょうど再び働き始めたと知っていますが、あなたはこの問題が何であったか? – Dave

答えて

0

なぜあなたはビルドパスにハーモニーを持っていますか?あなたのコードは、OracleのJDK7u3に組み込まれているSAXParserで正常に動作します。ハーモニー実装を使用する理由がない場合は、標準に戻す必要があります。

テストケースの形:

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; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; ハーモニーがどこから来るのか分かりません。 – ZiGi

+0

そのハーモニー**実装**では、輸入ではなく、それが問題です。クラスパス上にそれらを置く必要がありますか、または奇妙なJVMを使用していますか? 'java -version'を実行し、クラスパスを検査しますか? – FauxFaux

+0

ああ、私は今笑って混乱している。これはAndroidアプリです。これは2ヶ月間このようにうまくいき、今日作業を中止しました。私はRSSフィードが変更されたと確信していますが、私は問題の原因を知りません。私のクラスパスを見てみましょう – ZiGi

関連する問題