在java中创建HREF的Java HashMap和链接名

时间:2013-07-31 02:51:23

标签: java url hashmap jsoup

所以,我有一个huuuge HTML文件,它有很多这样的HREF和链接名称

<A HREF="AccountCttR.html" TARGET="tableFrame">AccountCttRR</A><BR>
<A HREF="AccountCV.html" TARGET="tableFrame">AccCV</A><BR>
<A HREF="AccountCR.html#AccountHolder" TARGET="tableFrame">AccH</A><BR>

现在,我想解析这个HTML文件,并使用

创建一个哈希映射
Key = <*.html>; value = <linkname>

前提条件:HREF都是唯一的。因此,它们可以很容易地用作hashmap的键。 我知道我可以使用JSoup,但我怎么做到这一点(在java中)?请帮帮忙?

使用的代码: 我正在尝试使用此代码:

// rawContent is the "string" output of bufferedreader

Element content = Jsoup.parse(rawContent).getElementById("content");
Elements links = content.getElementsByTag("a");

for (Element link : links) {
    String linkHref = link.attr("href");
    String linkText = link.text();
    System.out.println(linkHref+" @@@ "+ linkText);
}

但它返回一个Java NullPointerException

1 个答案:

答案 0 :(得分:3)

  

Jsoup是一个用于处理真实HTML的Java库。它   提供了一个非常方便的API来提取和操作数据,   使用最好的DOM,CSS和类似jquery的方法

以下是您可能尝试在HashMap中存储链接和详细信息的代码:

Document doc;
Map<String,String> hrefMap = new HashMap<String,String>();
try {

    // need http protocol
    doc = Jsoup.connect("http://google.com").get();

// get all links
    Elements links = doc.select("a[href]");
    for (Element link : links) {

             //put elements in the map
            hrefMap.put(link.attr("href"),link.text() );

    }

} catch (IOException e) {
    e.printStackTrace();
}