Cómo obtener el texto interno para un solo nodo usando HtmlAgilityPack

c# html-agility-pack

Pregunta

Mi HTML se ve así:

        <div id="footer">
            <div id="footertext">
                <p> 
                    Copyright &copy; FUCHS Online Ltd, 2013. All Rights Reserved.
                </p>
             </div>
        </div>

Me gustaría obtener este texto de la marca y almacenarlo como una cadena en mi código C #: "Copyright © FUCHS Online Ltd, 2013. Todos los derechos".

Esto es lo que he intentado:

        <div id="footer">
            <div id="footertext">
                <p> 
                    Copyright &copy; FUCHS Online Ltd, 2013. All Rights Reserved.
                </p>
             </div>
        </div>

Esto devuelve un objeto de tipo "HtmlAgilityPack.HtmlNodeCollection". ¿Cómo obtengo solo este valor de texto?

Respuesta popular

Necesitas el valor de un nodo. Por lo tanto, es mejor utilizar el método SelectSingleNode .

HtmlWeb web = new HtmlWeb();
var doc = web.Load("http://www.fuchsonline.com");
var link = doc.DocumentNode.SelectSingleNode("//div[@id='footertext']/p");

string rawText = link.InnerText.Trim();
string decodedText = HttpUtility.HtmlDecode(text); // or WebUtility

return decodedText;

También es posible que tenga que decodificar la entidad html &copy; .




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é