Comment obtenir le texte interne d'un seul nœud en utilisant HtmlAgilityPack

c# html-agility-pack

Question

Mon HTML ressemble à ceci:

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

J'aimerais obtenir ce texte à partir du balisage et le stocker en tant que chaîne dans mon code C #: "Copyright © FUCHS Online Ltd, 2013. Tous droits".

C'est ce que j'ai essayé:

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

Cela retourne un objet de type "HtmlAgilityPack.HtmlNodeCollection". Comment puis-je obtenir juste cette valeur de texte?

Réponse populaire

Vous avez besoin de la valeur d'un noeud. Par conséquent, il est préférable d'utiliser la méthode 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;

Vous devrez peut-être aussi décoder l'entité html &copy; .



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow