我实际上是用JAVA android创建了我的第一个RSS阅读器,我遇到了问题。
事实上,我得到了一些RSS信息,但周围都有HTML标签。
我需要的是提取这些标记中的每个HTML 内容并将它们放在字符串列表中,但我不知道该怎么做。
你能帮我解决这个问题吗?
感谢您提前
答案 0 :(得分:1)
假设您有一个名为htmlString的html内容,您可以使用正则表达式清除它。
String htmlString = "<tr><td>12345</td></tr>";
String noHTMLString = htmlString.replaceAll("\\<.*?>","");
答案 1 :(得分:1)
这应该将html标签之间的所有内容列表提取到名为matches的列表中。您应该修改括号中的正则表达式以匹配您的内容。当前版本仅匹配包含数字,字母,点,逗号,括号,缩写和空格的文本。
Pattern pattern = Pattern.compile("<\\w+>([\\w\\s\\.,\\-\\(\\)]+)</\\w+>");
Matcher matcher = pattern.matcher(content);
List<String> matches = new ArrayList<String>();
while(matcher.find()){
matches.add(matcher.group(1));
}
答案 2 :(得分:1)
如果您的rss是xml格式,则需要dom4j.jar
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class test {
public static void main(String[] args) throws Exception {
String rssUrl = ""; // paste url here
List<RssDocument> docList = new ArrayList<RssDocument>();
try
{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(rssUrl);
Element channel = (Element) document.getRootElement().element("channel");
for (Iterator i = channel.elementIterator("item"); i.hasNext();)
{
Element element = (Element) i.next();
String title = element.elementText("title");
String pubDate = element.elementText("pubDate");
String description = element.elementText("description");
RssDocument doc = new RssDocument(title, pubDate, description);
docList.add(doc);
}
}
catch (Exception e)
{
e.printStackTrace();
}
// do something with docList
}
public static class RssDocument {
String title;
String pubDate;
String description;
RssDocument(String title, String pubDate, String description) {
this.title = title;
this.pubDate = pubDate;
this.description = description;
}
}
}
将您的RSS网址粘贴到变量“rssUrl”中,然后运行此主程序。您将获得RSS文档列表,其中包含标题,发布日期和说明。
如果您需要的只是每个rss项的标题和描述,请使用以下代码。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class test {
public static void main(String[] args) throws Exception {
String rssUrl = ""; // paste url here
List<String> strList = new ArrayList<String>();
try
{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(rssUrl);
Element channel = (Element) document.getRootElement().element("channel");
for (Iterator i = channel.elementIterator("item"); i.hasNext();)
{
Element element = (Element) i.next();
String title = element.elementText("title").replaceAll("\\<.*?>","");
String description = element.elementText("description").replaceAll("\\<.*?>","");
strList.add(title + " " + description);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
然后strList将是字符串列表,其中包含标题和描述。
例如:
{
"title1 description1"
"title2 description2"
"title3 description3"
}