2014-07-17 4 views
0

Je donne les résultats suivants jsFiddleComment utiliser JSoup pour obtenir le lien hypertexte href?

http://jsfiddle.net/B5zvV/

Je tente d'utiliser JSoup pour obtenir la valeur de chaîne href de l'hyperlien sur la ligne 238:

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

Par conséquent, souhaité le résultat serait d'obtenir une chaîne avec une valeur de:

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

Voici mon code:

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

Quand je lance cela, la valeur de elems est vide: pourquoi, et que dois-je faire pour obtenir la chaîne désirée?

+1

Avez-vous le href avec la valeur contenant repositoryId ou juste la valeur de href? –

+0

Merci @SyamS (+1) - Je suppose que je ne comprends pas votre question. J'essaie d'analyser le fichier HTML ('fizz.html') dans le lien jsFiddle ci-dessus. Dans ce fichier HTML, sur la ligne 238, se trouve un lien hypertexte (""). Je veux le 'href' de cet hyperlien spécifique, pas d'autres. En fin de compte, tout ce qui m'intéresse est la sous-chaîne 'repositoryId' dans le href, mais je peux l'analyser plus tard, après le code JSoup. – IAmYourFaja

Répondre

1

La méthode getElementsByAttributeValueContaining() renverra plusieurs valeurs dans ce cas car plusieurs hrefs a repositoryId. Si vous êtes particulier à propos de la ligne 238, alors ce a est inclus à l'intérieur d'un li avec la classe item item-default. Il n'y en a qu'un seul li et deux étiquettes à l'intérieur. Il suffit de prendre le premier comme

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

Merci @Syam S (+1) - cependant j'obtiens un NPE sur la 3ème ligne, parce que 'elems.first()' retourne NULL. Pensées? – IAmYourFaja

+0

C'est parce que le select n'a rien retourné. Faites-vous référence à ce code HTML. –

+0

mis à jour avec un extrait de ce code HTML. J'espère que cela t'aides. :) –

Questions connexes