none
вывести на экран первый абзац RRS feed

  • Вопрос

  • Здравствуйте!
     С помощью библиотеки HtmlAgilityPack я вывожу со страницы текст статьи.Этот текст разбит на несколько абзацев(<p>текст1</p> <p>текст2</p> ).можно ли как-то вывести только первый абзац?
    2 января 2013 г. 7:17

Ответы

  • Ещё раз:

    Чтобы конкретно посоветовать, нужно знать, как и что вы получаете.

    Допустим, каждая статья расположена в div'e. Тогда код может быть таким:

    string html = @"
    <html>
      <div><p>текст1</p> <p>текст2</p></div>
      <div><p>text1</p> <p>text2</p><div>
    </html>
    ";
    
    var htmlDoc = new HtmlAgilityPack.HtmlDocument();
    htmlDoc.LoadHtml(html);
    
    var nodes = htmlDoc.DocumentNode.SelectNodes("//div/p[1]");            
    
    foreach (var node in nodes)
    {
        Console.WriteLine(node.InnerText);
    }

    • Помечено в качестве ответа xero-rock 2 января 2013 г. 10:54
    2 января 2013 г. 10:36

Все ответы

  • Теоретически, конечно, можно. Чтобы конкретно посоветовать, нужно знать, как и что вы получаете.

    Допустим, такой псевдокод:

    string html = @"<html> <p>текст1</p> <p>текст2</p> </html>";
    
    var htmlDoc = new HtmlAgilityPack.HtmlDocument();
    htmlDoc.LoadHtml(html);
    
    var nodes = htmlDoc.DocumentNode.SelectNodes("//p");
    
    textBox.Text = nodes[0].InnerText;

    В HtmlDocument загружается html, с помощью HtmlAgilityPack получаем коллекцию узлов <p>, а потом просто берём значение первого узла.

    • Предложено в качестве ответа PetrishkoMVP, Moderator 2 января 2013 г. 10:02
    • Отменено предложение в качестве ответа xero-rock 2 января 2013 г. 10:17
    2 января 2013 г. 9:07
  • дело в том,что на странице 5 статей и они разделены от 2 до 4 абзацев.вот мне нужно с каждой статьи по первому абзацу вывести на  консоль
    2 января 2013 г. 10:08
  • Ещё раз:

    Чтобы конкретно посоветовать, нужно знать, как и что вы получаете.

    Допустим, каждая статья расположена в div'e. Тогда код может быть таким:

    string html = @"
    <html>
      <div><p>текст1</p> <p>текст2</p></div>
      <div><p>text1</p> <p>text2</p><div>
    </html>
    ";
    
    var htmlDoc = new HtmlAgilityPack.HtmlDocument();
    htmlDoc.LoadHtml(html);
    
    var nodes = htmlDoc.DocumentNode.SelectNodes("//div/p[1]");            
    
    foreach (var node in nodes)
    {
        Console.WriteLine(node.InnerText);
    }

    • Помечено в качестве ответа xero-rock 2 января 2013 г. 10:54
    2 января 2013 г. 10:36
  • спасибо.все получилось))
    2 января 2013 г. 10:54