2009-08-28 8 views
2
<div> 
<b>Token1</b> 
Token2 
<b>Token3</b> 
</div> 

J'essaie d'extraire Token2 de la divHTMLAgilityPack analyse syntaxique dans le InnerHTML

je parviens à obtenir token1 et Token3 avec:

HtmlNodeCollection headerFooter = doc.DocumentNode.SelectNodes("//div//b"); 

Comment puis-je extraire directement Token2 avec HTMLAgilityPack?

Une option sale est de remplacer token1 et Token2 par String.Empty dans doc.DocumentNode.SelectNodes ("// div"). InnerText, mais je l'imagine peut été fait de manière plus propre avec HTMLAgilityPack ...

Répondre

6

Le texte est dans les nœuds de texte; donc vous devriez être en mesure de regarder "// div/text()" et de concaténer:

StringBuilder sb = new StringBuilder(); 
foreach (HtmlAgilityPack.HtmlTextNode node in 
     doc.DocumentNode.SelectNodes("//div/text()")) 
{ 
    sb.Append(node.Text.Trim()); 
} 
string s = sb.ToString(); 
+0

Même en utilisant text(), je vais avoir Token1 et Token3. –

+0

Non, vous ne le ferez pas ... sauf si vous faites // text() ou // div/*/text(); // div/text() renvoie * seulement * ceux directement sous les divs. Ou pour un élément spécifique, SelectNodes ("text()") –

+1

Ou en d'autres termes ... essayez-le ;-p –

Questions connexes