HTML敏捷包在WP8上的使用
本文关键字:WP8 HTML | 更新日期: 2023-09-27 17:49:17
这个问题是我之前在这里发布的关于解析HTML的问题的后续问题
我正在解析一个有大量tr标签的HTML页面,像这样:
<tr>
<td class="first">
</td>
<td >
Origin
</td>
<td>
Airline
</td>
<td>
Flight Number
</td>
<td>
22 Feb 11:50
</td>
<td class="last">
Arrived 12:35
</td>
</tr>
这是我用来读取页面的代码,它工作正常:
foreach (HtmlNode node in htmlDocument.DocumentNode.SelectNodes("//td"))
{
string item = node.ChildNodes[0].InnerHtml.Trim();
lstResults.Items.Add(item)
}
问题是,我想将每组5个TD值连接到一个字符串中。目前,代码将每个项目单独添加到lisbox中,因此每个航班基本上得到5个条目,如下所示:
FlightNumber
DueTime
arrival time
Origin
Airline
但是我只想为每个航班添加一个条目,就像这样:
出发地-航空公司-航班号-到期-到达
每个航班都有tr标签,每个tr标签内都有上面显示的信息。我不确定如何检测何时到达特定航班的标签末尾,以便将信息分组到一个字符串中,而不是单独添加每个td标签。在每个tr标记的开始或结束处都有一个空白字符串,但是我还是不知道如何将每个td标记的值连接到一个字符串中,而不是在单独的行中添加每个值。
任何想法?
我使用下面的实现实现了这个工作。
HtmlNodeCollection table = htmlDocument.DocumentNode.SelectNodes("//tr");
HtmlNodeCollection rows = table[0].SelectNodes("//td");
for (int i = 0; i < rows.Count; ++i)
{
string flight = rows[i].InnerHtml.Trim();
if (!flight.Contains(".jpg"))
{
item += flight + " - ";
}
else
{
lstFlights.Items.Add(item);
item = "";
}
}
您可能应该尝试添加一个计数最多为5的int。然后从循环1到5,将结果添加到字符串或var中,然后仅在第5个循环时将该变量作为单个项转储到列表中。然后,您希望将计数器重置为0并重新开始。
Int i =1;
String item = String.Empty;
foreach (HtmlNode node in htmlDocument.DocumentNode.SelectNodes("//td"))
{
if(i =<5)
{
item += node.ChildNodes[0].InnerHtml.Trim();
i++;
}
if (i == 5)
{
lstResults.Items.Add(item);
i = 0;
}
}