public static List <TcxActivity> Convert(string xmlFilePath) { List <TcxActivity> result = new List <TcxActivity>(); string xmlContent = File.ReadAllText(xmlFilePath); XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlContent); // full document if (doc.HasChildNodes) { var trainingCenterDatabase = doc.GetElementsByTagName("TrainingCenterDatabase"); foreach (XmlNode trainingCenterDatabaseNode in trainingCenterDatabase) { var activities = GetChildren(trainingCenterDatabaseNode, "Activities"); foreach (XmlNode act in activities) { var activitiesChildren = GetChildren(act, "Activity"); foreach (XmlNode activity in activitiesChildren) { TcxActivity tcxAct = new TcxActivity(); var sport = activity.Attributes["Sport"]; var idChild = GetChildren(activity, "Id"); var lapChild = GetChildren(activity, "Lap"); tcxAct.Id = GetChildValue(activity, "Id"); tcxAct.Sport = sport.Value; tcxAct.Laps = new List <TcxLap>(); foreach (XmlNode lapNode in lapChild) { TcxLap lap = new TcxLap(); lap.StartTime = lapNode.Attributes["StartTime"].Value; lap.Track = new TcxTrack(); lap.Track.TrackPoints = new List <TcxTrackpoint>(); var trackNodes = GetChildren(lapNode, "Track"); foreach (var trackNode in trackNodes) { var trackPointsNodes = GetChildren(trackNode, "Trackpoint"); foreach (var trackPointNode in trackPointsNodes) { TcxTrackpoint point = LoadTrackpoint(trackPointNode); lap.Track.TrackPoints.Add(point); } } tcxAct.Laps.Add(lap); } result.Add(tcxAct); } } } } return(result); }
private static TrackActivity ConvertActivity(TcxActivity tcxActivity) { TrackActivity track = new TrackActivity(); track.Laps = new List <TrackLap>(); track.Waypoints = new List <TrackWaypoint>(); foreach (TcxActivityLap tcxLap in tcxActivity.Laps) { TrackLap lap = new TrackLap(); lap.Points = new List <TrackPoint>(); if (tcxLap.Tracks != null) { foreach (TcxTrackPointList tcxTrack in tcxLap.Tracks) { if (tcxTrack.Trackpoints != null) { foreach (TcxTrackPoint tcxPoint in tcxTrack.Trackpoints) { TrackPoint pt = ConvertTrackPoint(tcxPoint); if (pt != null) { lap.Points.Add(pt); } } } } } track.Laps.Add(lap); } return(track); }