Вопрос

Я разбираю HTML-файл и имею несколько проблем.

Я использую приведенный ниже код:

РЕДАКТИРОВАТЬ********************************

Обновленный код теперь работает.

private void PhoneApplicationPage_Loaded (отправитель объекта, RoutedEventArgs e) {

    WebClient client = new WebClient();
    client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);

    client.DownloadStringAsync(new Uri(@"http://www.SourceURL.com"));

}

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    var html = e.Result;

    var doc = new HtmlDocument();
        doc.LoadHtml(html);

    var list = doc.DocumentNode.Descendants("div").ToList();


    var node = doc.DocumentNode.Descendants("div")
        .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
        .Element("table")
        .Element("tbody")
        .Elements("tr").Aggregate("Flight list\n", (acc, n) => acc + "\n" + n.InnerHtml);
       // .Elements("td")

    this.scrollViewer1.Content = node;




       }

    }
}

Это дает мне этот результат.

введите описание изображения здесь

Все результаты в настоящее время дезадаптируются по мере необходимости.

Мой вопрос: как я могу изменить этот код, чтобы отображать все результаты под всеми <tr>'s

edit ############################ XAML

ListBox Margin="6,6,-12,0" Name="listBox1">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="0,0,0,17" Width="432" Height="Auto">

                            <TextBlock Text="{Binding Flight}" Foreground="#FF4BCCF5" FontSize="24" />
                            <TextBlock Text="{Binding Origin}" TextWrapping="Wrap" FontSize="22" Foreground="#FF969696" />
                            <TextBlock Text="{Binding Date}" TextWrapping="Wrap" FontSize="20" Foreground="#FF05C16C" />
                            <TextBlock Text="{Binding Time}" TextWrapping="Wrap" FontSize="20" />
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

Принятый ответ

Предполагая, что у вас есть те же методы, что и при использовании XElement, это должно сделать трюк

var text = list.Descendants("div")
                 .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
                 .Element("table")
                 .Element("tbody")
                 .Descendants("tr").Aggregate("",(acc,n)=>acc+"\n"+n.OuterHtml);

 this.textBlock2.Text = text;

Популярные ответы

var node = doc.DocumentNode.Descendants("div")
    .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
    .Element("table")
    .Element("tbody")
    .Descendants("tr").ToArray();

this.textBlock2.Text = string.Join(Environment.NewLine, node.Select(tr => tr.InnerHtml));

просто вы можете получить все строки на

var node = doc.DocumentNode.Descendants("div")
    .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
    .Element("table")
    .Element("tbody");

    if (node != null)
    {
       this.textBlock2.Text = node.InnerHtml;
    }


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему