使用 rss version="2" 解析提要

Parsing a feed with rss version="2"

我正在尝试使用 Java ROM 解析 RSS 提要,但版本不正确:

<rss version="2">

当我将其更改为 "2.0" 时,它会正确解析。我如何使用 Java ROM 来解决这个问题?

我可以子类化 RSS20Parser 并覆盖 isMyType 但是我在哪里以及如何注册这个新的解析器?

我通过创建 RSS20Parser 的子类并覆盖 isMyType 解决了这个问题。然后我复制 rome.properties,将子类添加到 WireFeedParser.classes 中的解析器列表,并将此文件放在类路径中。我正好在用 Clojure 编程,这里是代码:

(ns feeds.rss20-parser
  (:import (com.rometools.rome.io.impl RSS20Parser)
           (org.jdom2 Document))
  (:gen-class
   :name feeds.RSS20Parser
   :extends com.rometools.rome.io.impl.RSS20Parser
   :exposes-methods {isMyType parentIsMyType}))

(defn version [^Document doc]
  (some-> doc
          .getRootElement
          (.getAttribute "version")
          .getValue
          .trim))

(defn -isMyType [^feeds.RSS20Parser this ^Document doc]
  (or (.parentIsMyType this doc)
      (= "2" (version doc))))