Tengo un HTML que descargo a través de mi cliente de solicitud de web. Y fuera de todo el HTML quiero analizar solo esta parte de HTML:
<span class="sku">
<span class="fb">SKU :</span>118880101
</span>
Estoy usando el paquete agilty de HTML para recuperar este valor: 118880101
Y he escrito algo como esto:
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
return htmlDoc.DocumentNode.SelectNodes("//span[@class='sku']").ElementAt(0).InnerText;
Y esto me devuelve este valor de HTML:
SKU :118880101
Literalmente de esta manera, espacios incluidos ... ¿Cómo puedo arreglar esta lógica con el paquete de HTML Agilty para que solo pueda sacar este valor 118880101?
¿Alguien me puede ayudar?
Edición: una expresión regular como esta haría la cosa:
Substring(skuRaw.LastIndexOf(':') + 1);
lo que significaría tomar todo después de ": 'iniciar sesión en la cadena que recibo ... ¿Pero no estoy seguro de si es seguro usar expresiones regulares como esta?
Prueba esto
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var innerText=htmlDoc.DocumentNode.SelectNodes("//span[@class='sku']")
.ElementAt(0).InnerText;
return innerText.replace(/\D/g,'');
Si desea utilizar solo el paquete Html Agility, intente esto
var child = htmlDoc.DocumentNode.SelectNodes("//span[@class='fb']")
.FirstOrDefault();
if (child != null)
{
var parent = child.ParentNode;
parent.RemoveChild(child);
var innerText = parent.InnerText;
}