/// <summary> /// Processes the nodes. /// </summary> /// <param name="parent">The parent.</param> /// <param name="factEvent">The fact event.</param> /// <param name="context">The context.</param> private void ProcessNodes(XmlNode parent, FactEvent factEvent, FactsEntities context) { if (parent.Attributes != null && parent.Attributes.Count > 0) { ProcessAttributes(parent, factEvent, context); } if (parent.HasChildNodes) { foreach (XmlNode node in parent.ChildNodes) { ProcessNodes(node, factEvent, context); } } }
/// <summary> /// Processes the attributes. /// </summary> /// <param name="parent">The parent.</param> /// <param name="factEvent">The fact event.</param> /// <param name="context">The context.</param> private void ProcessAttributes(XmlNode parent, FactEvent factEvent, FactsEntities context) { if (parent.Name != "Qualifiers") { foreach (XmlAttribute attribute in parent.Attributes) { switch (attribute.Name) { case "away_score": factEvent.away_score = short.Parse(attribute.Value); break; case "home_score": factEvent.home_score = short.Parse(attribute.Value); break; case "game_id": factEvent.fixture_id = long.Parse(attribute.Value); break; case "status": factEvent.game_status = attribute.Value; break; case "timer_running": factEvent.timer_running = byte.Parse(attribute.Value); break; case "id": factEvent.opta_event_id = long.Parse(attribute.Value); break; case "direction": factEvent.direction = attribute.Value; break; case "direction_of_play_x": factEvent.direction_of_play_x = decimal.Parse(attribute.Value, CultureInfo.InvariantCulture); break; case "direction_of_play_y": factEvent.direction_of_play_y = decimal.Parse(attribute.Value, CultureInfo.InvariantCulture); break; case "event_id": factEvent.event_id = short.Parse(attribute.Value); break; case "event_type_id": factEvent.event_type_id = short.Parse(attribute.Value); break; case "event_type_name": factEvent.event_type_name = attribute.Value; break; case "last_modified": factEvent.last_modified = DateTime.Parse(attribute.Value); break; case "outcome": factEvent.outcome = short.Parse(attribute.Value); break; case "period": factEvent.period = attribute.Value; break; case "period_id": factEvent.period_id = short.Parse(attribute.Value); break; case "period_minute": factEvent.period_minute = byte.Parse(attribute.Value); break; case "period_second": factEvent.period_second = byte.Parse(attribute.Value); break; case "player_id": factEvent.player_id = long.Parse(attribute.Value); break; case "team_id": factEvent.team_id = long.Parse(attribute.Value); break; case "timestamp": factEvent.timestamp = DateTime.Parse(attribute.Value); break; case "timestamp_milliseconds": factEvent.timestamp_milliseconds = attribute.Value; break; case "x": factEvent.x = decimal.Parse(attribute.Value, CultureInfo.InvariantCulture); break; case "y": factEvent.y = decimal.Parse(attribute.Value, CultureInfo.InvariantCulture); break; default: if (parent.Name.ToLower() == "game") { factEvent.gameAdditional += string.Format("<attribute><name>{0}</name><value>{1}</value></attribute>", attribute.Name, attribute.Value); } else { factEvent.eventAdditional += string.Format("<attribute><name>{0}</name><value>{1}</value></attribute>", attribute.Name, attribute.Value); } break; } } } if (parent.Name == "Qualifiers") { var qualifier = new Qualifier(); foreach (XmlAttribute qualifierAttribute in parent.Attributes) { switch (qualifierAttribute.Name) { case "id": qualifier.ID = long.Parse(qualifierAttribute.Value); break; case "name": qualifier.name = qualifierAttribute.Value; break; case "qualifier_id": qualifier.qualifier_id = long.Parse(qualifierAttribute.Value); break; case "value": qualifier.value = qualifierAttribute.Value; break; default: qualifier.qualifierAdditional += string.Format("<attribute><name>{0}</name><value>{1}</value></attribute>", qualifierAttribute.Name, qualifierAttribute.Value); break; } } context.Qualifiers.Add(qualifier); factEvent.Qualifiers.Add(qualifier); } factEvent.created = DateTime.Now; }
/// <summary> /// Processes the file. /// </summary> /// <param name="doc">The document.</param> private void ProcessFile(XmlDocument doc) { var entity = new FactEvent(); try { using (var context = new FactsEntities()) { ProcessNodes(doc, entity, context); context.FactEvents.Add(entity); context.SaveChanges(); } } catch (DbUpdateException) { } }