【发布时间】:2011-09-05 02:18:17
【问题描述】:
我目前正在运行以下代码,以使用适用于 WP7 的 HTML Agility Pack 解析 HTML 链接。
编辑 ******************************** 带有建议更改的代码
void client_DownloadStringCompleted(对象发送者,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").Select(n => new Flight()
{
Airline = n.Element("td").Single(j => j.Attribute("class") == "airline").Value,
FlightType = n.Element("td").Single(j => j.Attribute("class") == "airline").Value,
Time = n.Element("td").Single(j => j.Attribute("class") == "airline").Value,
}
);
这会将以下内容输出到滚动查看器中
每行中有多个 td 用于航班、时间、航空公司等。我想做的是将每个 td 内部文本绑定到列表框数据模板。
这是我认为 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 Airline}" Foreground="#FF4BCCF5" FontSize="24" />
<TextBlock Text="{Binding Flight}" TextWrapping="Wrap" FontSize="22" Foreground="#FF969696" />
<TextBlock Text="{Binding Time}" TextWrapping="Wrap" FontSize="20" Foreground="#FF05C16C" />
<TextBlock Text="{Binding Origin}" TextWrapping="Wrap" FontSize="20" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
HTML 示例:
<tr class="">
<td class="airline"><img src="/images/airline logos/NZ.gif" title="AIR NEW ZEALAND LIMITED. " alt="AIR NEW ZEALAND LIMITED. " /></td>
<td class="flight">NZ8</td>
<td class="codeshare"> </td>
<td class="origin">San Francisco</td>
<td class="date">01 Sep</td>
<td class="time">17:15</td>
<td class="est">18:00</td>
<td class="status">DEPARTED</td>
</tr>
所以问题是:如何将每个 td 结果绑定到自己的文本块?
【问题讨论】:
-
你能展示一个更好的 Html 例子吗?
-
每个 td 上有什么?你发布的图片被剪掉了。
-
@Derek 我刚刚更新了我的代码。
-
@alfonsa 只更新 HTML 部分
标签: c# html parsing windows-phone-7 html-agility-pack