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标记的值连接到一个字符串中,而不是在单独的行中添加每个值。

任何想法?

HTML敏捷包在WP8上的使用

我使用下面的实现实现了这个工作。

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;
    }
}