Android 来自特定rss新闻源的选择性新闻
在我的应用程序中,我想显示特定网站的RSS提要。但我不希望它显示完整的Rss提要,我只希望搜索和显示一些特定的标签,并且屏幕上只显示其相关链接 下面是我的解析器类代码:-Android 来自特定rss新闻源的选择性新闻,android,parse-platform,rss,Android,Parse Platform,Rss,在我的应用程序中,我想显示特定网站的RSS提要。但我不希望它显示完整的Rss提要,我只希望搜索和显示一些特定的标签,并且屏幕上只显示其相关链接 下面是我的解析器类代码:- package com.example.sara.rssfeed; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1
package com.example.sara.rssfeed;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Xml;
import com.example.sara.rssfeed.RssItem;
public class PcWorldRssParser {
// We don't use namespaces
private final String ns = null;
public List<RssItem> parse(InputStream inputStream) throws XmlPullParserException, IOException {
try {
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(inputStream, null);
parser.nextTag();
return readFeed(parser);
} finally {
inputStream.close();
}
}
private List<RssItem> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
parser.require(XmlPullParser.START_TAG, null, "rss");
String title = null;
String link = null;
List<RssItem> items = new ArrayList<RssItem>();
while (parser.next() != XmlPullParser.END_DOCUMENT) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equals("title")) {
title = readTitle(parser);}
else if (name.equals("link")) {
link = readLink(parser);}
if (title=="Top Stories - Google News" && link=="http://news.google.com/news?hl=en&ned=us") {
RssItem item = new RssItem(title, link);
items.add(item);
title = null;
link = null;
}
}
return items;
}
private String readLink(XmlPullParser parser) throws XmlPullParserException, IOException {
parser.require(XmlPullParser.START_TAG, ns, "link");
String link = readText(parser);
parser.require(XmlPullParser.END_TAG, ns, "link");
return link;
}
private String readTitle(XmlPullParser parser) throws XmlPullParserException, IOException {
parser.require(XmlPullParser.START_TAG, ns, "title");
String title = readText(parser);
parser.require(XmlPullParser.END_TAG, ns, "title");
return title;
}
// For the tags title and link, extract their text values.
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
String result = "";
if (parser.next() == XmlPullParser.TEXT) {
result = parser.getText();
parser.nextTag();
}
return result;
}
}
package com.example.sara.rssfeed;
导入java.io.IOException;
导入java.io.InputStream;
导入java.util.ArrayList;
导入java.util.List;
导入org.xmlpull.v1.XmlPullParser;
导入org.xmlpull.v1.XmlPullParserException;
导入android.util.Xml;
导入com.example.sara.rssfeed.RssItem;
公共类PCWorldsSpaser{
//我们不使用名称空间
私有最终字符串ns=null;
公共列表解析(InputStream InputStream)抛出XmlPullParserException,IOException{
试一试{
XmlPullParser=Xml.newPullParser();
setFeature(XmlPullParser.FEATURE_进程_名称空间,false);
setInput(inputStream,null);
parser.nextTag();
返回readFeed(解析器);
}最后{
inputStream.close();
}
}
私有列表readFeed(XmlPullParser解析器)抛出XmlPullParserException,IOException{
require(XmlPullParser.START_标记,null,“rss”);
字符串标题=null;
字符串链接=null;
列表项=新建ArrayList();
while(parser.next()!=XmlPullParser.END_文档){
if(parser.getEventType()!=XmlPullParser.START_标记){
继续;
}
String name=parser.getName();
如果(名称等于(“头衔”)){
title=readTitle(解析器);}
else if(name.equals(“link”)){
link=readLink(解析器);}
如果(标题=“热门新闻-谷歌新闻”&&link=”http://news.google.com/news?hl=en&;ned=美国){
RssItem项目=新RssItem(标题、链接);
项目。添加(项目);
title=null;
link=null;
}
}
退货项目;
}
私有字符串readLink(XmlPullParser解析器)抛出XmlPullParserException,IOException{
require(XmlPullParser.START_标记,ns,“link”);
字符串链接=读文本(解析器);
require(XmlPullParser.END_标记,ns,“link”);
返回链接;
}
私有字符串readTitle(XmlPullParser解析器)抛出XmlPullParserException,IOException{
require(XmlPullParser.START_标记,ns,“title”);
字符串title=readText(解析器);
require(XmlPullParser.END_标记,ns,“title”);
返回标题;
}
//对于标签标题和链接,提取其文本值。
私有字符串readText(XmlPullParser解析器)引发IOException,XmlPullParserException{
字符串结果=”;
if(parser.next()==XmlPullParser.TEXT){
结果=parser.getText();
parser.nextTag();
}
返回结果;
}
}
错误:
在线if(标题==“热门新闻-谷歌新闻”&&
链接==”http://news.google.com/news?hl=en&ned=us如果我把
title=空和链接=空的`
它显示完整的rss提要。但如果我给它特定的链接和标题标签来搜索,它什么也不会显示,只会显示一个空白屏幕
请帮助我,我做错了什么。
提前感谢。我建议登录查看标题和链接实际提供的内容,可能不是您认为的内容。您知道任何其他获取筛选RSS新闻提要的方法,以便它只提供用户所需的新闻吗???我建议登录查看标题和链接实际提供的内容,它可能不是你想象的那样。你知道有没有其他方法可以获取过滤RSS新闻提要,从而只提供用户想要的新闻???