Trouver la valeur InnerHtml en utilisant XpathNavigator et HtmlAgilityPack

c# html-agility-pack xpathnavigator

Question

portion de test.xml

<tr class="a"> 
    <td align="left" nowrap="true">desc1</td> 
    <td align="left">desc2</td>  
    <td>desc3</td>  
    <td align="left">desc4</td> 
    <td align="left">desc5</td>
    <td>desc6</td> 
    <td>desc7</td> 
    <td>desc8</td>
    <td class="nr">desc9</td>
</tr>

// crée XpathNavigator pour obtenir la dernière valeur dans td ie desc9

<tr class="a"> 
    <td align="left" nowrap="true">desc1</td> 
    <td align="left">desc2</td>  
    <td>desc3</td>  
    <td align="left">desc4</td> 
    <td align="left">desc5</td>
    <td>desc6</td> 
    <td>desc7</td> 
    <td>desc8</td>
    <td class="nr">desc9</td>
</tr>

Le débogueur indique que la valeur peut être évaluée comme ci-dessous, ce qui est très fastidieux.

<tr class="a"> 
    <td align="left" nowrap="true">desc1</td> 
    <td align="left">desc2</td>  
    <td>desc3</td>  
    <td align="left">desc4</td> 
    <td align="left">desc5</td>
    <td>desc6</td> 
    <td>desc7</td> 
    <td>desc8</td>
    <td class="nr">desc9</td>
</tr>

Quel est le meilleur moyen d’arriver à descendre?

Réponse acceptée

Je n'ai pas utilisé XPathNavigator, mais voici une solution similaire avec le style SelectNodes / SelectSingleNode et le pack d'agilité HTML.

string xPathSearch = "/table[1]/tbody[1]/tr[2]";
HtmlNode tableRow = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableRow.ChildNodes[9].InnerText;

OU

string xPathSearch = "/table[1]/tbody[1]/tr[2]";
HtmlNode tableRow = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableRow.ChildNodes[9].InnerText;

FYI - La meilleure documentation sur le pack HTML Agility semble être les exemples fournis avec la source. Vous ne savez pas pourquoi ce n'est pas un téléchargement séparé dans la documentation.


Réponse populaire

Je pense que vous vous trompez.

Je crois que tout ce que vous devez faire est quelque chose dans le sens de:

document.DocumentNode.SelectSingleNode("/table[1]/tbody[1]/tr[2]/td[9]");

Je ne trouve pas de copie en ligne de la documentation à laquelle vous connecter, mais vous pouvez consulter la documentation disponible à l' adresse http://htmlagilitypack.codeplex.com/releases/view/44954 pour plus de détails.

De même, si vous lisez simplement XML, y a-t-il une raison pour laquelle vous utilisez le pack d'agilité html ou est-ce simplement votre fichier de test qui est valide XML?




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi