2010-10-27 27 views
3

Utilisation du HTML Agility Pack est idéal pour obtenir des descendants et des tables entières etc ... mais comment pouvez-vous l'utiliser dans la situation ci-dessousHttp Agility Pack - Accès aux frères et sœurs?

...Html Code above... 

<dl> 
<dt>Location:</dt> 
<dd>City, London</dd> 
<dt style="padding-bottom:10px;">Distance:</dt> 
<dd style="padding-bottom:10px;">0 miles</dd> 
<dt>Date Issued:</dt> 
<dd>26/10/2010</dd> 
<dt>type:</dt> 
<dd>cement</dd> 
</dl> 

...HTML Code below.... 

Comment pourriez-vous trouver si miles était moins de 15 dans ce cas, Je ne comprends pas que vous pourriez faire quelque chose avec des éléments, mais auriez-vous besoin de tous les éléments pour trouver le bon et ensuite trouver le nombre juste pour vérifier sa valeur? Ou est il y a moyen d'utiliser regex avec le pack Agility pour atteindre cet objectif d'une meilleure façon ...

Répondre

3

Je suis assez sûr (ont pas vérifié) qu'il supporte l'axe following-sibling::, vous pouvez donc soit trouver le nœud "dt[.='Distance:']" et puis trouver node.SelectSingleNode("following-sibling::dd[1]") - ou (plus simple) il suffit d'utiliser node.NextSibling si vous êtes sûr que le dd suit toujours immédiatement le dt.

Par exemple:

string distance = doc.DocumentNode.SelectSingleNode(
      "//dt[.='Distance:']/following-sibling::dd").InnerText;