我进行了网络抓取并收集了大量的html和xml页面。我的目的是从中提取所有Rss / Atom提要。我注意到很多网站只是在标题上使用“text / xml”作为内容类型,所以我无法从任何其他类型的xml中识别出一个Feed。所以我写了这段代码:
public boolean isFeed(String content){
Document doc = Jsoup.parse(content);
Elements feed = doc.getElementsByTag("feed");
Elements channel = doc.getElementsByTag("channel");
if(feed!=null){
if(!feed.isEmpty()){
return true;
}
}
if(channel!=null){
if(!channel.isEmpty()){
return true;
}
}
return false;
}
这里有什么遗漏?有什么问题吗?
答案 0 :(得分:1)
使用完整的XML解析器解析文档。如果它不编译,它不是Atom。然后取文档(root)元素。如果它不是<feed xmlns="http://www.w3.org/2005/Atom">
,那么它不是Atom。当然使用适当的API来读取标记名称和命名空间,不要比较字符串。
采用类似方法发现RSS。或者使用Rome库为您解析文档。