HTML 파일을 파싱하고 몇 가지 문제가 있습니다.
아래 코드를 사용하고 있습니다.
편집하다********************************
업데이트 된 코드가 작동 중입니다.
개인 무효 PhoneApplicationPage_Loaded (개체 발신자, RoutedEventArgs 전자) {
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
모든 결과를 표시하려면 어떻게해야합니까?
############ 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;
}