Ignorar al analizar con HtmlAgilityPack

c# html-agility-pack

Pregunta

Estoy analizando la tabla html en c # usando Html Agility Pack que contiene un espacio sin interrupciones.

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

Donde la página es una cadena que contiene una tabla con caracteres especiales   dentro del texto

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

Utilizando SelectSingleNode(".//td").InnerText contendrá estos caracteres especiales, pero quiero ignorarlos.

¿Hay alguna forma elegante de ignorar esto (con o sin ayuda de Html Agility Pack) sin modificar la tabla de origen?

Respuesta aceptada

Podrías usar HtmlDecode

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

Te daré una cadena:

Carácter especial:


Respuesta popular

El espacio sin ruptura del "carácter especial" del que habla es un carácter válido que puede aparecer perfectamente en el texto de forma legítima, al igual que las "citas extravagantes", el em-dash, etc.

A menudo queremos tratar a ciertos personajes como equivalentes.

  • Por lo tanto, es posible que desee tratar un em-dash, en-dash y el signo menos / dash como si fuera el mismo.
  • O citas de lujo como las citas rectas.
  • O el espacio de no ruptura como espacio ordinario.

Sin embargo, esto no es algo en lo que HTML Agility Pack pueda ayudar. Necesitas usar algo como cadena. Reemplaza o tu propia función de canonicalización para hacer esto.

Sugeriría algo como:

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;
}



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué