Выберите все <p>из дочерних элементов узла, используя HtmlAgilityPack

StackOverflow https://stackoverflow.com/questions/2111332

Вопрос

У меня есть следующий код, который я использую для получения html-страницы.Сделайте URL-адреса абсолютными, а затем сделайте ссылки rel nofollow и откройте в новом окне / вкладке.Моя проблема связана с добавлением атрибутов к <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();

Кто-нибудь может увидеть, что я делаю не так?Уже некоторое время пытаюсь здесь, но безуспешно.Этот код выдает, что ContentNode.SelectNodes("/a") не задан для экземпляра объекта.Я думаю, попробовать установить steam на 0?

Приветствия, Денис

Это было полезно?

Решение

Является ContentNode ноль?Возможно, вам потребуется выбрать-single с запросом "//*[@id='content']".

Для получения дополнительной информации, "/a" означает все якоря в корне.делает "descendant::a" работать?Существует также HtmlElement.GetElementsByTagName что могло бы быть проще - т. е. yourElement.GetElementsByTagName("a").

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top