1

ROME ライブラリで RSS/Atom フィードを解析しようとしています。私は Java を初めて使用するので、Java の複雑な部分の多くに慣れていません。


  1. ROME は自動的にそのモジュールを使用して、さまざまなフィードを処理しますか? それとも、それらを使用するように要求する必要がありますか? もしそうなら、これに関する任意の方向。
  2. 正しい「ソース」に到達するにはどうすればよいですか? を使用しようとしてitem.getSource()いましたが、うまくいきません。私は間違ったインターフェースを使用していると思います。いくつかの方向性をいただければ幸いです。

これが、データを収集するために私が持っているものの肉です。問題が発生している領域が 2 つあります。どちらも、フィードのソース情報の取得を中心に展開しています。情報源としては、著者ではなく、CNN、FoxNews、またはその他のいずれかが必要です。私の読書から判断する.getSource()と、正しい方法です。

List<String> feedList = theFeeds.getFeeds();
List<FeedData> feedOutput = new ArrayList<FeedData>();
for (String sites : feedList ) {
  URL feedUrl = new URL(sites);
  SyndFeedInput input = new SyndFeedInput();
  SyndFeed feed = input.build(new XmlReader(feedUrl));
  List<SyndEntry> entries = feed.getEntries();
  for (SyndEntry item : entries){
    String title = item.getTitle();                 
    String link = item.getUri();
    Date date = item.getPublishedDate();
Problem here -->         **     SyndEntry source = item.getSource();
    String description;
    if (item.getDescription()== null){
      description = "";
    } else {
      description = item.getDescription().getValue();
    }
    String cleanDescription = description.replaceAll("\\<.*?>","").replaceAll("\\s+", " ");
    FeedData feedData = new FeedData(); 
    feedData.setTitle(title);
    feedData.setLink(link);
And Here -->        **      feedData.setSource(link);
    feedData.setDate(date);
    feedData.setDescription(cleanDescription);
    String preview =createPreview(cleanDescription);
    feedData.setPreview(preview);
    feedOutput.add(feedData);
    // lets print out my pieces.
    System.out.println("Title: " + title);
    System.out.println("Date: " + date);
    System.out.println("Text: " + cleanDescription);
    System.out.println("Preview: " + preview);
    System.out.println("*****");
  }
}
4

2 に答える 2

1

getSource()SyndFeed間違いなく間違っています -問題のエントリが属するものを返します。おそらくあなたが欲しいのはgetContributors()何ですか?

モジュールに関する限り、それらは自動的に選択されるべきです。ここで説明されているように、独自に記述してプラグインすることもできます

于 2009-07-30T23:37:30.803 に答える
0

API を使用せずに URL からソースを正規表現してみたらどうですか?

それが私の最初の考えでした.とにかく、RSS標準化されたフォーマット自体をチェックして、このオプションが実際にこのレベルで利用可能かどうかを判断し、その実装を上向きに追跡しようとしました...

RSS 2.0 で source 要素を見つけましたが、以前のバージョンの仕様には存在しないようです。これは良いニュースではありません。

[ は1のオプションのサブ要素です

その値は、そのアイテムから派生した RSS チャネルの名前です。これには、ソースの XML 化にリンクする url という 1 つの必須属性があります。

于 2009-11-12T17:51:52.000 に答える