Android:当网站包含:link rel=”时如何下载RSS;候补;类型=";应用程序/rss+;xml";
我正在制作一个与RSS相关的应用程序。Android:当网站包含:link rel=”时如何下载RSS;候补;类型=";应用程序/rss+;xml";,android,html,rss,Android,Html,Rss,我正在制作一个与RSS相关的应用程序。 我希望能够下载RSS(xml),只要网站URL包含: <link rel="alternate" type="application/rss+xml" title="Engadget" href="http://www.engadget.com/rss.xml"> link rel=“alternate”type=“应用程序/rss+xml” 例如,源包含: <link rel="alternate" type="application
我希望能够下载RSS(xml),只要网站URL包含:
<link rel="alternate" type="application/rss+xml" title="Engadget" href="http://www.engadget.com/rss.xml">
link rel=“alternate”type=“应用程序/rss+xml”
例如,源包含:
<link rel="alternate" type="application/rss+xml" title="Engadget" href="http://www.engadget.com/rss.xml">
在我不知道的情况下http://www.engadget.com/rss.xml'url,输入时如何下载RSS'http://www.engadget.com“?要完成此任务,您需要:
isHtml
方法extractRssUrl
方法IOUtils
和FileUtils
类。IOUtils.toString
用于将输入流转换为字符串,如文章中所建议的
extracterssurl
使用正则表达式来解析HTML,尽管它受到高度反对。(请参阅“.”中的咆哮)。考虑到这一点,让extracterssurl
作为起点。extracterssurl
中的正则表达式是基本的,并不涵盖所有情况
请注意,对isRss(str)
的调用已被注释掉。如果要进行RSS检测,请参阅“”
我想最明显的答案是你首先获取你拥有的URL(http://www.engadget.com),然后在HTML中查找具有正确类型的
标记,然后获取其href
属性
URL url = new URL("http://www.engadget.com");
InputStream is = url.openStream();
int ptr = 0;
StringBuffer buffer = new StringBuffer();
while ((ptr = is.read()) != -1) {
buffer.append((char)ptr);
}
String html = buffer.toString();
Pattern rsspatt = Pattern.compile("<link[^>]*rss[^>]*>");
Matcher m = rsspatt.matcher(html);
String link = "";
if (m.find()) {
String rsslink = m.group();
Pattern xmllinkpatt = Pattern.compile("href=\"([^\"]+)\"");
Matcher m2 = xmllinkpatt.matcher(rsslink);
m2.find();
link = m2.group(1);
}
URL=新URL(“http://www.engadget.com");
InputStream=url.openStream();
int-ptr=0;
StringBuffer=新的StringBuffer();
而((ptr=is.read())!=-1){
buffer.append((char)ptr);
}
字符串html=buffer.toString();
Pattern rsspatt=Pattern.compile(“]*rss[^>]*>”;
Matcher m=rsspat.Matcher(html);
字符串链接=”;
if(m.find()){
字符串rsslink=m.group();
模式xmlinkpatt=Pattern.compile(“href=\”([^\“]+)\”);
匹配器m2=xmllinkpatt.Matcher(rsslink);
m2.find();
link=m2组(1);
}
最后,变量link
将为空或包含所需的链接,您可以将其输入到downloadXml函数中
通常我不建议通过正则表达式解析HTML,但我假设这是针对手机应用程序的,您希望它保持简单,并尽可能只使用核心。当然,如果您想获得更多乐趣,您可以使用Jsoup检查链接标记和正确属性的存在性,并提取所需的链接。谢谢您,我感谢您的帮助。这也是XML解析的一个很好的资源,更重要的是,它甚至包含一个工作示例:谢谢。虽然你的回答对我也有帮助,但我不得不选择一个。
obj.downloadXml("http://www.engadget.com/", "rss");
URL url = new URL("http://www.engadget.com");
InputStream is = url.openStream();
int ptr = 0;
StringBuffer buffer = new StringBuffer();
while ((ptr = is.read()) != -1) {
buffer.append((char)ptr);
}
String html = buffer.toString();
Pattern rsspatt = Pattern.compile("<link[^>]*rss[^>]*>");
Matcher m = rsspatt.matcher(html);
String link = "";
if (m.find()) {
String rsslink = m.group();
Pattern xmllinkpatt = Pattern.compile("href=\"([^\"]+)\"");
Matcher m2 = xmllinkpatt.matcher(rsslink);
m2.find();
link = m2.group(1);
}