Ignorer lors de l'analyse avec HtmlAgilityPack

c# html-agility-pack

Question

J'analyse la table html en c # en utilisant Html Agility Pack qui contient un espace inépuisable.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);

Où page est une chaîne contenant une table avec des caractères spéciaux   dans le texte.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);

Utilisation de SelectSingleNode(".//td").InnerText contient ces caractères spéciaux, mais je souhaite les ignorer.

Existe-t-il un moyen élégant d'ignorer cela (avec ou sans l'aide de Html Agility Pack) sans modifier la table source?

Réponse acceptée

Vous pouvez utiliser HtmlDecode

string foo = HttpUtility.HtmlDecode("Special char:  ");

Vous donnera une ficelle:

Caractère spécial:


Réponse populaire

Le "caractère spécial" dont vous parlez est un espace valide qui peut parfaitement apparaître légitimement dans le texte, tout comme les "guillemets fantaisistes", les tirets superbes etc.

Souvent, nous voulons traiter certains caractères comme équivalents.

  • Donc, vous voudrez peut-être traiter un em-dash, un en-dash et un signe moins / dash comme étant identiques.
  • Ou des citations fantaisistes identiques aux citations droites.
  • Ou l'espace insécable en tant qu'espace ordinaire.

Cependant, ce n'est pas quelque chose que HTML Agility Pack peut aider. Vous devez utiliser quelque chose comme string.Replace ou votre propre fonction de canonisation pour le faire.

Je suggérerais quelque chose comme:

static string CleanupStringForMyApp(string s){
    // replace characters with their equivalents
    s = s.Replace(string.FromCharCode(160), " ");
    // Add any more replacements you want to do here
    return s;
}



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