如何使用java代码获取RSS中信息以下内容来自互联网,版权归原作者,仅供参考:
以下是一个RSS文件的标准结构:
rss version="2.0"
channel
title.../title
link.../link
description.../description
copyright.../copyright
generator.../generator
lastBuildDate.../lastBuildDate
image.../image
item.../item
item.../item
...
item.../item
item.../item
/channel
/rss
其中rss元素是其根元素,它吧所有的内含信息包含在一个频道channel中 , 频道有许多meta信息,就是出现 在item前面的所有子元素 。而rss中的所有摘要,都以item元素的形式出现 , 一个channel 可以有多个item 。每个item同样有元信息 , 最重要的是描述description和链 接link 。
现在有很多工具可以生成RSS,事实上,因为本质上RSS是一个XML文件 , 所以你完全可以以手工编写XML 文件的形式编写RSS,但是还是推荐用工具来简化操作和减少错误,我最喜欢用的工具是: /73066.htm
其实,不仅仅RSS阅读器可以获取RSS信息 , 我们用java API也是可以的 。比较有名的是sourceforge的rsslib4j 包,我们这里就展示这个包的用法:
这个包可以到 去下,对应的javadoc地址是
实验部分:
我们演示2个例子,一个是读取本地rss文件的信息,一个是读取网络上某rss文件的信息:
首先我们开发了一个工具类,这个类的工具方法可以分离出相关信息并且转为字符串形式:
package com.charles.learnrss;
import java.util.List;
import org.gnu.stealthp.rsslib.RSSChannel;
import org.gnu.stealthp.rsslib.RSSHandler;
import org.gnu.stealthp.rsslib.RSSImage;
import org.gnu.stealthp.rsslib.RSSItem;
/*
*This file is confidential by Charles.Wang
*Copyright belongs to Charles.wang
*You can make contact with Charles.Wang (charles_wang888@126.com)
*/
public class RSSInfoRetriever {
public static String getRSSInfo(RSSHandler handler){
StringBuffer rssInfo = new StringBuffer();
//取得rss提要的频道信息(Channel)
RSSChannel channel = handler.getRSSChannel();
//Part1: 分离出rss频道的元信息
//(1)频道的标题
String titleInfo = channel.getTitle();
//(2)频道的链接信息
String linkInfo = channel.getLink();
//(3)频道的描述信息
String descriptionInfo = channel.getDescription();
//(4)频道使用的语言
String languageInfo = channel.getLanguage();
//(5)频道版权信息
String copyrightInfo = channel.getCopyright();
//(6)频道的generator的信息
String generatorInfo = channel.getGenerator();
//(7)频道的image信息
RSSImage channelImage = channel.getRSSImage();
String channelImageUrl = channelImage.getUrl();
rssInfo.append("频道标题: " titleInfo "n");
rssInfo.append("频道相关Link信息: " linkInfo "n");
rssInfo.append("频道描述信息: " descriptionInfo "n");
rssInfo.append("频道使用的语言: " languageInfo "n");
rssInfo.append("频道版权信息: " copyrightInfo "n");
rssInfo.append("频道产生器信息: " generatorInfo "n");
rssInfo.append("频道图片URL: " channelImageUrl "n");
//Part2: 分离出rss频道的所有摘要(feed),这里用item表示
List channelItems = channel.getItems();
int itemSize= channelItems.size();
if(itemSize =1){
rssInfo.append("n");
rssInfo.append("一共有 " itemSize "个摘要在这个频道中");
rssInfo.append("n");
for (int i=0;iitemSize;i){
int itemNo = i 1;
RSSItem item = (RSSItem)channelItems.get(i);
rssInfo.append("n");
rssInfo.append("摘要" itemNo ":");
//(1)摘要的作者
String itemAuthor = item.getAuthor();
//(2)摘要的标题
String itemTitle = item.getTitle();
//(3)摘要的描述
String itemDescription = item.getDescription();
//(4)摘要的链接
String itemLink = item.getLink();
//(5)摘要的发布日期
String itemPubDate = item.getPubDate();
rssInfo.append("作者: " itemAuthor "n");
rssInfo.append("标题: " itemTitle "n");
rssInfo.append("描述: " itemDescription "n");
rssInfo.append("链接: " itemLink "n");
rssInfo.append("发布日期: " itemPubDate "n");
rssInfo.append("n");
}
}
return rssInfo.toString();
}
}
然后我们写了一个驱动类 , 这个驱动类封装了个实验:
package com.charles.demo;
import java.net.URL;
import org.gnu.stealthp.rsslib.RSSChannel;
import org.gnu.stealthp.rsslib.RSSException;
import org.gnu.stealthp.rsslib.RSSHandler;
import org.gnu.stealthp.rsslib.RSSParser;
import com.charles.learnrss.RSSInfoRetriever;
/**
*
* Description:
*
* @author charles.wang
* @created May 10, 2012 9:07:13 AM
*
*/
public class RSSInfoRetrieverDemo {
// 这里定义一个本地的rss摘要 , (对应我的博客空间)
public static final String localRSS = "charles.rss";
//这里定义一个远程的rss摘要的地址(对应人民网)
public static final String remoteRSS="";
public static void main(String[] args) throws Exception {
// DEMO 1: 让RSSParser去解析本地某个rss文件
// 取得本地的rss
RSSHandler localRSSHandler = new RSSHandler();
RSSParser.parseXmlFile(localRSS, localRSSHandler, false);
// 取得rss元素的信息并且打印在控制台上
String localRSSInfo=RSSInfoRetriever.getRSSInfo(localRSSHandler);
System.out.println("*************Charles博客的 rss信息如下****************");
System.out.println(localRSSInfo);
System.out.println("****************************************************");
// DEMO 2: 让RSSParser去解析远程rss的url
// 取得远程的rss
RSSHandler remoteRSSHandler = new RSSHandler();
RSSParser.parseXmlFile(new URL(remoteRSS), remoteRSSHandler, false);
// 取得rss元素的信息并且打印在控制台上
String remoteRSSInfo=RSSInfoRetriever.getRSSInfo(remoteRSSHandler);
System.out.println("****************人民网的 rss信息如下******************");
System.out.println(remoteRSSInfo);
System.out.println("****************************************************");
}
}
实验:读取本地的rss文件(charles.rss)
这个文件部分内容为:
双击代码全选
rss version="2.0"
channel
title
![CDATA[ 平行线的凝聚-51CTO技术博客 ]]
/title
link
![CDATA[]]
/link
description
![CDATA[ Latest 20 blogs of charles_wang8888 ]]
/description
copyright
![CDATA[ Copyright(C) 51CTO技术博客-领先的IT技术博客 ]]
/copyright
generator
![CDATA[ 51CTO BLOG by 51CTO Studio ]]
/generator
lastBuildDateThu, 01 Jan 1970 00:00:00 GMT/lastBuildDate
image
url
![CDATA[]]
/url
title
![CDATA[ 51CTO BLOG ]]
/title
link
![CDATA[]]
/link
description
![CDATA[ 51CTO技术博客-领先的IT技术博客 ]]
/description
/image
item
title
![CDATA[ 跨域访问的解决方案(非HTML5的方法1:JSONP) ]]
/title
description
![CDATA[
跨域访问一直是困扰很多开发者的问题之一 。因为涉及到安全性问题,所以跨域访问默认是不可以进行的,否则假设今天我写了一段js去更改google的图标,明天他写了一段代码去吧google首页的文字全部变成梵文 , 那还得..【a href="" target="_blank"继续阅读全文/a】
]]
/description
link
![CDATA[
]]
/link
author
![CDATA[ charles_wang8888 ]]
/author
category
![CDATA[ Web开发 ]]
/category
pubDateTue, 08 May 2012 04:02:42 GMT/pubDate
/item
...
/channel
/rss
如何使用Java代码获取Android和ios移动终端Mac地址通过设备开通WiFi连接获取Mac地址是最可取的 , 代码如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 设备开通WiFi连接,通过wifiManager获取Mac地址
*
* @author 高焕杰
*/
public static String getMacFromWifi(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
State wifiState = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(wifiState == NetworkInfo.State.CONNECTED){//判断当前是否使用wifi连接
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) { //如果当前wifi不可用
wifiManager.setWifiEnabled(true);
}
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
return wifiInfo.getMacAddress();
}
return null;
}
除了上面这种方法,网上还给出了另外两种方法:
1、通过调用Linux的busybox命令获取Mac地址:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 通过调用Linux的busybox命令获取Mac地址
*
* @author 高焕杰
*/
private static String getMacFromCallCmd(){
try {
String readLine = ;
Process process = Runtime.getRuntime().exec(busybox ifconfig);
BufferedReader bufferedReader = new BufferedReader (new InputStreamReader(process.getInputStream()));
while ((readLine = bufferedReader.readLine ()) != null) {//执行命令cmd,只取结果中含有HWaddr的这一行
if(readLine.contains(HWaddr)){
return readLine.substring(readLine.indexOf(HWaddr) 6, readLine.length()-1);
}
}
}catch(Exception e) {//如果因设备不支持busybox工具而发生异常 。
e.printStackTrace();
}
return null;
}
注意:这种方法在Android Pad中可以准确获取到的Mac地址 , 但是在Android手机中无法准确获取到 。
2、通过查询记录了MAC地址的文件(文件路径:“/proc/net/arp”)获取Mac地址:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
* 通过查询记录了MAC地址的文件(文件路径:“/proc/net/arp”)获取Mac地址
*
* @author 高焕杰
*/
private static String getMacFromFile(Context context){
String readLine =;
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new FileReader(new File(/proc/net/arp)));
int rollIndex = 0;
while((readLine = bufferedReader.readLine())!=null){
if(rollIndex == 1){
break;
}
rollIndex = rollIndex1;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
if(readLine !=nullreadLine.length()1){
String[] subReadLineArray = readLine.split( );
int rollIndex = 1;
for(int i = 0; isubReadLineArray.length;i){
if(!TextUtils.isEmpty(subReadLineArray[i])){
if(rollIndex == 4){
return subReadLineArray[i];
}
rollIndex = rollIndex1;
}
}
}
return null;
}
注意:无论在Android Pad中还是在Android手机中,这种方法都无法准确获取到Mac地址 。
如何获取lucene的java源代码1.启动eclipse,使用svn插件从把trunk代码checkout出来 。
2.如果你没有安装ant,那么先安装ant(ant.apache.org) 。
3.进入cmd,切入到源代码目录(在lucene和solr目录的上一级) 。
4.然后使用ant eclipse(如果你没有安装ivy的话,ant会提示你安装,按照提示安装)
5.在eclipse中创建java project , 勾掉Use default location,选择luence,然后下一步直到完成导入lucene,同样的导入solr 。
6.因为solr引用lucene,所以在solr的buildpath中加入对lucene项目引用 。
【免费java代码获取 免费java源码下载】免费java代码获取的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于免费java源码下载、免费java代码获取的信息别忘了在本站进行查找喔 。
推荐阅读
- 考研考北师大GIS,北师大gis考研科目
- 微信上怎么搞小号的视频号,微信上怎么搞小号的视频号推广
- redis缓存和mysql数据一致性,redis缓存数据一致性问题
- 终极梦想格斗游戏下载,终极格斗什么意思
- go语言写批量注册 go语言简单代码
- 开发游戏流水,开发游戏流水怎么算
- 荣耀路由硬盘休眠怎么设置,荣耀路由cd
- 列出c语言的输入输出函数 c语言输入输出语句举例
- 个人如何推广反诈APP,个人如何推广反诈APP