使用rss version =" 2"

时间:2017-01-05 12:36:50

标签: java xml rss rome

我正在尝试使用具有此错误版本的Java ROME解析RSS提要:

<rss version="2">

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

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

1 个答案:

答案 0 :(得分:1)

我通过创建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))))