Question

J'ai le code suivant que j'utilise pour obtenir une page html. Faire les urls absolue et faire les liens rel nofollow et ouvert dans une nouvelle fenêtre / onglet. Ma question est autour de l'ajouter des attributs aux <a>s.

        string url = "http://www.mysite.com/";
        string strResult = "";            

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        if ((request.HaveResponse) && (response.StatusCode == HttpStatusCode.OK)) {
            using (StreamReader sr = new StreamReader(response.GetResponseStream())) {
                strResult = sr.ReadToEnd();
                sr.Close();
            }
        }

        HtmlDocument ContentHTML = new HtmlDocument();
        ContentHTML.LoadHtml(strResult);
        HtmlNode ContentNode = ContentHTML.GetElementbyId("content");

        foreach (HtmlNode node in ContentNode.SelectNodes("/a")) {
            node.Attributes.Append("rel", "nofollow");
            node.Attributes.Append("target", "_blank");
        }

        return ContentNode.WriteTo();

Quelqu'un peut-il voir ce que je fais mal? Vous connaissez essayer pendant un certain temps ici avec pas de chance. Ce code arrive que ContentNode.SelectNodes ( « / a ») n'est pas définie à une instance d'un objet. Je pensais à essayer de régler la vapeur à 0?

Cordialement, Denis

Était-ce utile?

La solution

est ContentNode null? Vous devrez peut-être sélectionner-simple avec la "//*[@id='content']" de requête.

Pour info, "/a" signifie tous les points d'ancrage à la racine . ne "descendant::a" travail? Il y a aussi HtmlElement.GetElementsByTagName qui pourrait être plus facile -. yourElement.GetElementsByTagName("a") dire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top