2014-07-17 40 views
0

我有以下的jsfiddle如何使用JSoup獲取超鏈接href?

http://jsfiddle.net/B5zvV/

我試圖用JSoup獲得238線的超級鏈接的href字符串的值:

<a href="/chain/admin/config/editRepository.action?planKey=AB-CSD&amp;repositoryId=28049450"> 

因此,期望結果將獲得值爲的字符串:

/chain/admin/config/editRepository.action?planKey=AB-CSD&amp;repositoryId=28049450 

這裏是我的代碼:

Document doc = Jsoup.connect("http://myapp.example.com/fizz.html").get() 
Elements elems = doc.getElementsByAttributeValueContaining("href", "repositoryId") 

當我運行這一點,elems值爲空:爲什麼,做什麼,我需要做的就是所需的字符串?

+1

你有href值包含repositoryId或只是href值? –

+0

謝謝@SyamS(+1) - 我想我不明白你的問題。我正試圖在上面的jsFiddle鏈接中解析HTML文件('fizz.html')。在第238行的HTML文件中,是超鏈接(''標籤)。我想要那個特定的超鏈接的'href',沒有其他的。最終,我感興趣的是href內部的'repositoryId'子字符串,但我可以在JSoup代碼後面解析出它。 – IAmYourFaja

回答

1

getElementsByAttributeValueContaining()方法將在這種情況下返回多個值,因爲許多hrefs具有repositoryId。如果您對第238行有所瞭解,那麼a將被包含在li的第item item-default類中。這裏只有一個這樣的li和兩個標籤。只要採取第一個像

String html = "<li class=\"item item-default\" data-item-id=\"28049450\" id=\"item-28049450\">" 
       + "<a href=\"/chain/admin/config/editRepository.action?planKey=AB-CSD&amp;repositoryId=28049450\">" 
        + "<h3 class=\"item-title\">MCAppRepo <span class=\"item-default-marker grey\">(default)</span></h3>" 
       + "</a>" 
       + "<a href=\"/chain/admin/config/confirmDeleteRepository.action?planKey=AB-CSD&amp;repositoryId=28049450\" class=\"delete\" title=\"Remove repository\">" 
        + "<span class=\"assistive\">Delete</span>" 
       + "</a>" 
      + "</li>"; 

Document doc = Jsoup.parse(html); 
Elements elems = doc.select("li.item.item-default > a"); 
System.out.println(elems.first().attr("href")); 
+0

謝謝@Syam S(+1) - 但是我在第三行得到了NPE,因爲'elems.first()'返回NULL。思考? – IAmYourFaja

+0

這是因爲select沒有返回任何內容。你是指那個html。 –

+0

更新了一個從該HTML代碼片段。希望這可以幫助。 :) –