2
我試圖解析與Java ROME一個RSS feed具有這種不正確的版本:當我將其更改爲"2.0"
解析與RSS版本飼料=「2」
<rss version="2">
它正確解析。我如何使用Java ROME解決這個問題?
我可以繼承RSS20Parser
並覆蓋isMyType
但我在哪裏以及如何註冊這個新的解析器?
我試圖解析與Java ROME一個RSS feed具有這種不正確的版本:當我將其更改爲"2.0"
解析與RSS版本飼料=「2」
<rss version="2">
它正確解析。我如何使用Java ROME解決這個問題?
我可以繼承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))))