Extraire la valeur href du exemple de code HTML suivant est en avant si la boucle I directement à travers tout et rompre immédiatement après la première:Extrait élément interne sans boucle
<li class="parts partname parts_first">
<div id="dpdn10" uri="/public/page/part1" class="partype partstate">
<div class="ptctainer">
<div class="ptitle">
<p class="ptypead">
<span class="rtext"><a href="http://www.example.com/page/ptname.html?dv=rfirst" class="mnLabel">First</a></span>
<span class="ndx">
<a href="#" dndx="dpdn10" class="xpnd _t" style="opacity:1">Details: </a>
</span>
</p>
</div>
</div>
<div id="dpdn10_content" class="xpns">
<div class="ptctainer">
<div class="ptitle">
<p class="ptypead">
<span class="rtext"><a href="http://www.example.com/page/ptname.html?dv=rfirst" class="mnLabel">First</a></span>
<span class="ndx"><a href="#" class="xpnd">Details: </a></span>
</p>
</div>
</div>
</div>
</div>
</li>
Je peux certainement le faire quand je peut supposer que la valeur href est identique pour les deux instances de comme dans l'exemple ci-dessus.
Cependant, cette approche échoue si elles ne sont pas identiques et je veux en extraire une spécifique (la première ou la seconde).
Ce qui me porte à la recherche d'un mécanisme qui permet Jsoup « imbriquée »: Jusqu'à présent, je suis familier avec la sélection à un seul niveau comme dans:
Elements links = doc.select("a[href]"); // a with href
Elements pngs = doc.select("img[src$=.png]"); // img with src ending .png
Element masthead = doc.select("div.masthead").first(); // div with class=masthead
Mais je ne peux pas trouver de la documentation ou un exemple pour la sélection à plusieurs niveaux, par exemple
Element link= doc.select("div.xpns.div.ptctainer.div.ptitle.p.ptypead.span.rtext");
Ce qui précède est à titre d'illustration et pas de vraie syntaxe, bien sûr. Je ne sais pas si quelque chose comme ceci est possible (encore) dans Jsoup.
Une telle "sélection imbriquée" existe-t-elle dans Jsoup? Vous ne pouvez pas simplement «enchaîner» les fonctions de sélection?
Bien sûr, je peux mais la forme "chaînée" implique une traversée/analyse moins optimisée. J'espérais peut-être que Jsoup gère un tel scénario de manière optimisée. Merci et +1. – ef2011
L'analyse est toujours lente. Idéalement, vous passez tous ensemble. – Halcyon
J'avais espéré que Jsoup aurait un mécanisme multi-niveau similaire à [l'ancêtre enfant] (http://jsoup.org/cookbook/extracting-data/selector-syntax) qu'il a déjà. Mais il semble que ce n'est pas encore disponible. – ef2011