新闻类网站rss接口的编写心得

使用的是Jdom中的相关API,具体步骤如下

要求的格式:

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
<channel>
<title>上千趣,顶有趣</title>
<description>千趣网,有趣新闻第一聚合平台,生产和提供适合社交网络传播的各类有趣新闻。</description>
<link>http://www.qianqu.cc</link>
<language>zh_CN</language>
<pubDate>Tue, 06 Sep 2016 13:46:22 +0800</pubDate>
<item>
<title>
<![CDATA[俄罗斯推出女模裸体高速举牌活动,成效实在是太好了 ]]>
</title>
<link>http://127.0.0.1:8080/life/55720.html?from=LieBao&s=cm</link>
<description>
<![CDATA[俄罗斯的交通事故发生率非常高,每年有三万多人因此死亡受伤 ]]>
</description>
<content:encoded>
<![CDATA[
<article id="articleContent"><p style="text-align: left; text-indent: 2em;">俄罗斯的交通事故发生率非常高,每年都有三万多人因此死亡受伤。为了让人们意识到超速行驶的危害,当局做了很多努力,效果都不理想。现在他们又做了一个大胆的尝试,那就是让半裸美女在街头举限速牌,提醒司机不要超速<span style="text-indent: 2em;">很多司机看到后果然将车速放缓,慢了下来。</span></p><p style="text-align: center; text-indent: 2em;"><img src="http://www.qianqu.cc/uploads/image/article/big/20160906/1473140636321029057.jpg"/></p><p style="text-align: left; text-indent: 2em;">因为美女的颜值太高了,当她们在路边举牌的时候路过的车辆无一不按照规定限速安全驾驶。当局让半裸美女举限速标志,就是为了让人们放慢车速,不管是要看美女还是看限速牌,只要慢下来就是成功。</p><p style="text-align: center; text-indent: 2em;"><img src="http://www.qianqu.cc/uploads/image/article/big/20160906/1473140636507051888.jpg"/></p><p style="text-align: center; text-indent: 2em;"><img src="http://www.qianqu.cc/uploads/image/article/big/20160906/1473140636664041317.jpg"/></p><p style="text-align: center; text-indent: 2em;"><img src="http://www.qianqu.cc/uploads/image/article/big/20160906/1473140636765052287.jpg"/></p><p style="text-align: center; text-indent: 2em;"><img src="http://www.qianqu.cc/uploads/image/article/big/20160906/1473140636859014104.jpg"/></p><p style="text-align: left; text-indent: 2em;">这就是俄罗斯街头的场景。</p><p style="text-align: left; text-indent: 2em;">路边突然出现半裸美女,司机很容易分神。虽然她们是一番好意,举牌提醒司机不要超速,但分神带来的后果可能更加严重。之前莫斯科街头一辆印有女子胸部广告的卡车就在一天内引发500多起车祸。</p><p style="text-align: left; text-indent: 2em;">和美女一姐打嘴炮、探讨不一样姿势。微信添加朋友→公众号→搜“姿势情报局一姐”(已认证),太纯洁的,不要来!<br style="text-align: left;"/></p></article>
]]>
</content:encoded>
<category>生活</category>
<source>千趣网</source>
<pubDate>Tue, 06 Sep 2016 13:44:18 +0800</pubDate>
</item>
</channel>
</rss>

第一步:创建根标签

Document doc = new Document();
Element rss = new Element("rss");
rss.setAttribute("version", "2.0");
doc.setRootElement(rss);

第二步:创建子标签(带有CDATA的)

Element channel = new Element("channel");
//将channel标签置于rss标签中
rss.addContent(channel);
//不带CDATA区域的
Element CTitle = new Element("title");
CTitle.addContent(channelData.getTitle());
channel.addContent(CTitle);
//带CDATA区域的
Element CDescription = new Element("description");
CDATA str = new CDATA(channelData.getDescription());
CDescription.addContent(str);
channel.addContent(CDescription);...........以此类推,需要多少标签,已同样的方式创建即可,如果标签较多,也得自己手动编写代码,是一件比较苦逼的活儿

第三步:使用io流将拼接好的xml输出

XMLOutputter out = new XMLOutputter();// 创建输出流
        ByteArrayOutputStream buf = new ByteArrayOutputStream();
        out.output(doc, buf);
        String ok = buf.toString("ISO-8859-1");
        return ok;这里需要强调一下:这里的编码我这边是需要改成iso-8859-1的(控制台输出的=对应的日志也是乱码,但是再浏览器中访问接口链接时,不会出现乱码),我这我也比较郁闷,之前换成utf-8不好使,会出现乱码

注意事项:

  1,我使用的是springmvc作为表现层框架的

@Controller
@RequestMapping("")
public class SuNingAction {
    @Autowired
    private SuNingService suNingService;
    @RequestMapping(method={RequestMethod.GET},produces = MediaType.APPLICATION_XHTML_XML_VALUE,value={"/suNing"})
    @ResponseBody()
    public String Xiaozhi(HttpServletResponse response) throws JAXBException, IOException {具体代码就是上面的三大步骤;return null;}

  2,关于xml中的名称空间问题<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">

  

        Document doc = new Document();
        Element rss = new Element("rss");
      //名称空间的添加
        Namespace ns= Namespace.getNamespace("content", "http://purl.org/rss/1.0/modules/content/");
        rss.addNamespaceDeclaration(ns);
         //版本号的添加
        rss.setAttribute("version", "2.0");
        doc.setRootElement(rss);//这招绝对好用

  3,有的rss中的content标签,需要带上encoded,比如说上面的案例就需要使用 <content:encoded>并且还需CDATA包裹

  

Element Icontent = new Element("encoded", "content","http://purl.org/rss/1.0/modules/content/");
CDATA c = new CDATA(itemData.get(i).getContent());
Icontent.addContent(c);
item.addContent(Icontent);

  4,时间格式问题

  涉及到时间的格式化问题Tue, 06 Sep 2016 13:44:18 +0800

  还有就是星期的转化,中英文的转换问题,这些可以通过百度自行解决,并不是难点

  5,还有最后一个问题是在servcie层中关于数据返回的问题

  注意变量的定义的范围,也就是全局变量与局部变量的定义位置问题,当从数据库中获取到数据后,通过get/set方法存值时,千万注意,不要将变量定义成全局的

  否则无论你检索的数据有多少条,存放值的对象中使用是一条相同的数据,这个问题虽然不大,但尽量不要犯,会被人嘲笑的, 擦,老子就被总监嘲笑半天.......

  

  

  

  

Element CDescription = new Element("description");CDATA str = new CDATA(channelData.getDescription());CDescription.addContent(str);channel.addContent(CDescription);
时间: 2024-10-12 00:48:41

新闻类网站rss接口的编写心得的相关文章

GNE: 4行代码实现新闻类网站通用爬虫

GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容.标题.作者.发布时间.正文中的图片地址和正文所在的标签源代码.GNE在提取今日头条.网易新闻.游民星空. 观察者网.凤凰网.腾讯新闻.ReadHub.新浪新闻等数百个中文新闻网站上效果非常出色,几乎能够达到100%的准确率. 使用方式非常简单: from gne import GeneralNewsExtractor extractor = GeneralNewsExt

使用风讯做新闻类网站

在帮老师做网站的时候,大多利用风讯后台制作.对于菜鸟的鄙人来说,其功能确实强大,不用再担心自己不会写代码勒. 使用这种方法做网站也有一段时间勒,但是每次做的时候总是会出现问题,其中最大的问题就是网页切片的问题.在此小结一下: 网页切片时,分三个部分切,这样在用DW制作时才顺利,不然浏览网页你会看见一段一段的空白间隙. 在排版布局上面,由于切片保留的web格式,因而自然就会在dw里面生成table标签(其实不是很like这个标签但是很方便啊,)不用在自己写css样式布局勒.当然在table里面也会

Java基础-接口.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void printCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB,要求 方法 实现输出大写英文字母表的功能,printLowerca

#34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void printLowercaseLetter():然 后写一个类Print实现接口InterfaceA和InterfaceB,要求      方法 实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文 字母表的功能.再写一个主类E,在主类E的main方法中创建P

小程序云开发之新闻类项目分析

应该每一个前端开发者都有一颗全干全栈的心??吧. 那就让云开发满足你 云开发一出来就开始玩,云数据库,云函数,全栈的体验和开发速度,真的不是一般的爽. 接下来工作中要开发一款新闻类小程序,于是就开始了对头条君的调研,此篇文章,是我的个人总结和分析,欢迎大佬拍砖. 一. 准备 小程序云开发必须有小程序AppId才能使用,所以首先应先注册一个小程序账号(如果已有请忽略).设置->开发设置中的小程序AppId 开发工具:编辑器-vscode, 微信开发者工具 辅助工具: Markman:图标标注工具,

java处理高并发高负载类网站的优化方法

一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF.尤其是Web2.0的应用,数据库的响应是首先要解决的. 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降.常用的优化措施是M-S(主-从)方式进行同步复制,将查询和操作和分别在不同的服务器上进行操作.我推荐的是M-M-Slaves方式,2个主Mysql,多个Slaves,需要注意的是,虽然有2个Master,但是同时只有1个是Activ

支付宝的手机网站支付接口的应用

由于去年做手机Portl接口的工作,需要使用支付宝的支付,于是手机网站支付接口就成了首选. 1.首先下载接口包 手机网站支付的产品介绍:https://b.alipay.com/order/productDetail.htm?productId=2013080604609688 demo下载链接:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104511&docType=1   (请点击关键字demo,进行下

呕心之作:支付宝的手机网站支付接口的应用

由于去年做手机Portl接口的工作,需要使用支付宝的支付,于是手机网站支付接口就成了首选. 1.首先下载接口包 支付宝商家服务中心链接:https://b.alipay.com/login.htm?goto=https://b.alipay.com:443/newIndex.htm 手机网站支付的产品介绍:https://b.alipay.com/order/productDetail.htm?productId=2013080604609688 demo下载链接:https://doc.ope

高仿新闻类APP频道管理功能,ItemTouchHelper的实践

转载请标明出处: http://blog.csdn.net/iamzgx/article/details/52843653 在上篇博客 简单仿TabLayout实现个性化Tab,让Tab展现多样化,通过HorizontalScrollView实现了类似TabLayout的功能,并且进行了红点提醒,数字提醒的拓展功能.这种功能在新闻类APP是很常见的,还有一种很常见的功能在上一篇博客结尾也提到过,也就是频道管理的功能.以常用的今日头条为例,频道管理功能效果图如下 仔细玩下这里的功能,这里最难的点应

YunCart电商网站支付宝接口出现500错误

yuncart 是一套易与集成的php开源商城系统,方便多人同时经行二次开发,Yuncart 可以以非常方便的方式切换到sql server,oracle等数据库,大小1.9MB,感兴趣的朋友,可以去官网下载. 最近帮朋友用php做了一个电商网站,化妆品方面的.上网看了相关方面的程序源码,最后选择了yuncart,它轻量.简单.功能丰富等特点,闲暇时,做了些修改.下面就今天出现的问题,简单的说下,希望能帮助到有类似问题的童鞋. 下图为我朋友的网站:  问题描述:       在网站上购买支付成功