Java提取String列表中的每个HTML内容

时间:2015-04-02 09:10:36

标签: java android

我实际上是用JAVA android创建了我的第一个RSS阅读器,我遇到了问题。

事实上,我得到了一些RSS信息,但周围都有HTML标签。

我需要的是提取这些标记中的每个HTML 内容并将它们放在字符串列表中,但我不知道该怎么做。

你能帮我解决这个问题吗?

感谢您提前

3 个答案:

答案 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"
}