示例#1
0
            private static void ParseEventDiv(List <DateTimeOffset> weekDays, int columnIndex, List <NewsEvent> list1, HAP.HtmlNode div)
            {
                var name    = div.SelectNode("a").InnerText.Trim();
                var country = name.Split(':').FirstOrDefault();

                if (string.IsNullOrWhiteSpace(country))
                {
                    country = "ALL";
                }
                else
                {
                    name = name.Substring(country.Length + 1);
                }
                var childNodes = div.ChildNodes;
                var dates      = (from node in childNodes
                                  where node.NodeType == HAP.HtmlNodeType.Text
                                  select node.InnerText.Decode()).ToArray();

                if (!dates.Any())
                {
                    throw new NewsParserException("No text nodes found in column " + (columnIndex + 1) + " for " + name);
                }

                var date = dates.FirstOrDefault(s => !string.IsNullOrWhiteSpace(s));

                if (date == null)
                {
                    return;
                }
                //throw new NewsParserException("No dates found in column " + (columnIndex + 1) + " for " + name);

                var level = div.SelectSingleNode(starXPath("Star")) != null
          ? NewsEventLevel.H
          : div.SelectSingleNode(starXPath("djStar")) != null ? NewsEventLevel.M
          : NewsEventLevel.L;
                var n = new NewsEvent()
                {
                    Country = country,
                    Name    = name,
                    Time    = weekDays[columnIndex].Add(ParseEventDate(date).TimeOfDay),
                    Type    = name.Contains("Speaks") ? NewsEventType.Speech : NewsEventType.Report,
                    Level   = level
                };

                list1.Add(n);
            }