Rome生成Rss后html标签的问题及解决

最近的项目需要网站生成RSS  Feed,  搜索一下后决定使用Rome. 生成RSS方法简单.
由于我需要生成的RSS在内容描述中是带有Html标签的, 而在使用后发现了问题, 尽管已经把description设置成"text/html", 但生成的RSS xml文件里Html标签全都被自动转换为转义字符(< >诸如此类), 虽然这也能被各种Rss阅读器识别, 但我一看到那满眼的< >就非常不爽. 直接导致了今天花了一天时间来解决这问题....
废话不多说,直接帖出解决办法:
解压原Rome包, 在com.sun.syndication.io.impl包下找到RSS090Generator这个类, 反编译之,大约在216行找到addItem方法, 注意不是addItems. 代码修改如下:
     protected   void  addItem(Item item, Element parent,  int  index)  throws  FeedException  {
        Element eItem 
= new Element("item", getFeedNamespace());
        populateItem(item,eItem, index);
        checkItemConstraints(eItem);
        generateItemModules(item.getModules(),eItem);
        
        Element desc
=eItem.getChild("description");
        String text=desc.getValue();
        desc.setContent(new
 CDATA(text));

        parent.addContent(eItem);
    }
重新编译, 再将此修改后的类覆盖原包中的类. 完成.

原理: 很简单.就三行代码... 意思是将Rss中为description标签的内容取出,使用JDOM中的CDATA组件放置, CDATA组件可以很好地避免Html标签被转换.

后记(废话): 本来这问题看着是不爽,但无伤大雅还是忍了.但由于后来在description中插入了图片, 而客户又要使用Adobe air作为Rss的客户端阅读器, 图片在浏览器自带的阅读器中可以显示而Adobe air中却显示不出来.于是我直接把问题根源指向了html标签. 但在偶费尽脑力找到解决办法并可以漂亮地显示出正常的Html标签后,Adobe air做的客户端中依然不能显示... 于是我顿悟,其实是图片插入的路径问题.... 插入的是相对路径,浏览器能认出但客户端就没那么聪明了,只认绝对路径. 早知如此,我还费那劲干嘛!!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值