Rails中Feedjira v2.0无法解析含xml-stylesheet的RSS Feed
解决Feedjira v2.0解析特定RSS源返回空对象的问题
问题根源
目标RSS源中的<xml-stylesheet>标签存在语法错误:href属性末尾使用了?>而非正确的"/>闭合,导致XML格式不合法,Feedjira依赖的XML解析器无法正常解析整个文档,最终返回空的Feedjira::Parser::ITunesRSS对象。
解决方案
在将响应内容传给Feedjira解析前,预处理修复或移除有问题的标签:
方法1:移除错误标签
直接删除有问题的xml-stylesheet行,代码示例:
# 获取RSS源内容(可替换为项目中实际使用的HTTP请求方式) response = HTTParty.get("https://www.deutschlandfunknova.de/podcast/update") # 清理响应内容,移除错误的xml-stylesheet标签 cleaned_body = response.body.gsub(/<xml-stylesheet type="text\/xsl" media="screen" href="https:\/\/www.deutschlandfunknova.de\/podcast.xsl\?>/, '') # 解析清理后的内容 feed = Feedjira::Feed.parse(cleaned_body)
方法2:修复标签语法
将错误的闭合符号修正为合法的XML格式,代码示例:
response = HTTParty.get("https://www.deutschlandfunknova.de/podcast/update") # 修正xml-stylesheet标签的闭合错误 cleaned_body = response.body.gsub(/<xml-stylesheet type="text\/xsl" media="screen" href="https:\/\/www.deutschlandfunknova.de\/podcast.xsl\?>/, '<xml-stylesheet type="text/xsl" media="screen" href="https://www.deutschlandfunknova.de/podcast.xsl"/>') feed = Feedjira::Feed.parse(cleaned_body)
验证
执行上述代码后,feed对象将包含解析后的RSS内容,而非空的ITunesRSS实例。
内容的提问来源于stack exchange,提问作者Mohsin Sethi
相关产品推荐
相关产品推荐

