Анализ dl с помощью HtmlAgilityPack

Это образец HTML, который я пытаюсь проанализировать с помощью Html Agility Упакуйте в ASP.Net (C #).

<div class="content-div">
    <dl>
        <dt>
            <b><a href="1.html" title="1">1</a></b>
        </dt>
        <dd> First Entry</dd>
        <dt>
            <b><a href="2.html" title="2">2</a></b>
        </dt>
        <dd> Second Entry</dd>
        <dt>
            <b><a href="3.html" title="3">3</a></b>
        </dt>
        <dd> Third Entry</dd>
    </dl>
</div>

Я хочу следующие значения:

  • Гиперссылка -> 1.html
  • Текст привязки -> 1
  • Внутренний текст od dd -> Первая запись

(Я взял здесь примеры первой записи, но мне нужны значения этих элементов для всех записей в списке)

Это код, который я использую в настоящее время,

var webGet = new HtmlWeb();
            var document = webGet.Load(url2);
var parsedValues=
   from info in document.DocumentNode.SelectNodes("//div[@class='content-div']")
   from content in info.SelectNodes("dl//dd")
   from link in info.SelectNodes("dl//dt/b/a")
       .Where(x => x.Attributes.Contains("href"))
   select new 
   {
       Text = content.InnerText,
       Url = link.Attributes["href"].Value,
       AnchorText = link.InnerText,
   };

GridView1.DataSource = parsedValues;
GridView1.DataBind();

Проблема в том, что я получаю значения для ссылки и якорного текста правильно, но для внутреннего текста он просто принимает значение первой записи и заполняет то же значение для всех других записей для общего количества раз, когда элемент встречается, а затем он начинается со второй Я могу быть не так ясно в своем объяснении, поэтому вот пример вывода, который я получаю с помощью этого кода:

First Entry     1.html  1
First Entry     2.html  2
First Entry     3.html  3
Second Entry    1.html  1
Second Entry    2.html  2
Second Entry    3.html  3
Third Entry     1.html  1
Third Entry     2.html  2
Third Entry     3.html  3

В то время как я пытаюсь получить

First Entry      1.html     1
Second Entry     2.html     2
Third Entry      3.html     3

, я новичок в HAP и очень мало знаю о xpath, поэтому я я уверен, что делаю здесь что-то не так, но я не мог он работает даже после того, как потратил на это несколько часов. Любая помощь приветствуется.

5
задан Robert Harvey 16 December 2015 в 23:29
поделиться