2012-02-26 16 views
0

、私はかつて以下のようなgettig XMLエラーのように見える、私は私のようなエラーが出BufferedReaderのxAgentを使ってRSSフィードを読むには?私はxAgentを使用して外部のRSSフィードを読み込むしようとしています

を使用して線でのXMLの行を読んでいるのでそれは疑いますこれら

  • 「欄32に1行目でエラー:文書の最後に余分なコンテンツ」「:オープンと終了タグの不一致:項目ライン0とチャネルカラム6561のライン1上のエラー」

ここに私あなたが試したこと

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false"> 
<xp:this.afterRenderResponse> 
<![CDATA[#{javascript: 

var u:java.net.URL = new java.net.URL("http://www.xpages.info/XPagesHome.nsf/NewsFeed.xsp?format=rss"); 
var br:BufferedReader= new java.io.BufferedReader(new java.io.InputStreamReader(u.openStream())); 
var tmp=""; 
while(br.readLine() != null){ 
    tmp+= br.readLine(); 
} 

var externalContext = facesContext.getExternalContext(); 
var writer = facesContext.getResponseWriter(); 
var response = externalContext.getResponse(); 
response.setContentType("text/xml"); 
response.setHeader("Cache-Control", "no-cache"); 
writer.write(tmp); 
writer.endDocument(); 
}]]> 

</xp:this.afterRenderResponse> 
</xp:view> 

答えて

3

XAgentをプロキシとして使用しています。実際にもっとや​​りたいのであれば、より良いクラスを使うことをお勧めします。最小値はHTTPクライアント(すべての接続の不自然さを扱う)か、ソースがATOMの場合、Apache Abderaクラス(HTTPクライアントを使用する)です。

問題は次のとおりです。ストリームにもヘッダー情報が含まれているため、XMLは<で始まらない。 HTTPクライアントを使用すると、それを避けることができます。

このような少し:ここ

public String getURL(String url) { 

    System.out.println("Fetching " + url); 

    if (this.httpClient == null) { 
     this.initializeHTTPSession(); 
    } 

    ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
    HttpGet get = new HttpGet(url); 

    String result = null; 

    try { 
     result = this.httpClient.execute(get, responseHandler); 
    } catch (HttpResponseException e) { 
     System.out.println(e.getMessage()); 
     return null; 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (UnknownHostException e) { 
     result = "The host is invalid: " + url; 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return result; 
} 

完全なソースコード:http://www.wissel.net/blog/downloads/SHWL-8BQPJD/ $ファイル/ HTTPReader.java

あなたは、応答ハンドラーのための文字列よりも何か他のものを使用する場合があります。

関連する問題