使用 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))))
我正在尝试使用 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))))