2011-12-07 69 views
1

我想解析使用ROME v0.8(j2sdk1.4.2_07)的RSS訂閱源,但無論使用哪個訂閱源,都會說相同的錯誤。ROME 0.8解析異常

com.sun.syndication.io.ParsingFeedException:無效XML:錯誤 線14:元素類型「元」必須由匹配 結束標記「」被終止。

import java.net.URL; 

import com.sun.syndication.feed.synd.SyndFeed; 
import com.sun.syndication.io.SyndFeedInput; 
import com.sun.syndication.io.XmlReader; 

public class RssTest { 

    public static void main(String[] args) { 

    try { 

      System.out.println("starting..."); 
      URL feedUrl = new URL("http://www.abc.net.au/news/feed/51120/rss.xml"); 
      SyndFeedInput input = new SyndFeedInput(); 
      SyndFeed feed = input.build(new XmlReader(feedUrl)); 

      System.out.println("Feed Title: " + feed.getTitle()); 

     } catch (Exception ex) { 
      System.out.println("Error: " + ex.getMessage()); 
     } 
    }  
} 

回答

2

從您的示例中的URL看起來格式良好的XML,並且不包含任何meta標籤,所以它應該是解析的羅馬。一個未終結的meta標籤使得它聽起來像某些東西正在返回一個HTML頁面而不是實際的提要。你的代理服務器是否需要特殊登錄?

+0

謝謝您的回答喬恩。原來我在代理服務器後面,所以把它整理出來,一切都按照它應該的方式工作! –

0

使用InputSource代替XmlReader

HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
InputStream is = connection.getInputStream(); 
InputSource source = new InputSource(is); 
SyndFeedInput input = new SyndFeedInput(); 
feed = input.build(source);