Come ottenere il testo interno per un singolo nodo utilizzando HtmlAgilityPack

c# html-agility-pack

Domanda

Il mio HTML ha questo aspetto:

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

Vorrei ottenere questo testo dal markup e memorizzarlo come una stringa nel mio codice C #: "Copyright © FUCHS Online Ltd, 2013. Tutti i diritti".

Questo è quello che ho provato:

   public string getvalue()
        {
            HtmlWeb web = new HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load("www.fuchsonline.com");
            var link = doc.DocumentNode.SelectNodes("//div[@id='footertext']");
            return link.ToString();
        }

Questo restituisce un oggetto di tipo "HtmlAgilityPack.HtmlNodeCollection". Come ottengo solo questo valore di testo?

Risposta popolare

Hai bisogno del valore di un nodo. Pertanto è meglio usare il metodo 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;

Potrebbe anche essere necessario decodificare l'entità html &copy; .



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow