public static Track Parse(XElement element) { /* * <xsd:complexType name="trkType"> * <xsd:sequence> * <xsd:element name="name" type="xsd:string" minOccurs="0"/> * <xsd:element name="cmt" type="xsd:string" minOccurs="0"/> * <xsd:element name="desc" type="xsd:string" minOccurs="0"/> * <xsd:element name="src" type="xsd:string" minOccurs="0"/> * <xsd:element name="link" type="linkType" minOccurs="0" maxOccurs="unbounded"/> * <xsd:element name="number" type="xsd:nonNegativeInteger" minOccurs="0"/> * <xsd:element name="type" type="xsd:string" minOccurs="0"/> * <xsd:element name="extensions" type="extensionsType" minOccurs="0"/> * <xsd:element name="trkseg" type="trksegType" minOccurs="0" maxOccurs="unbounded"/> * </xsd:sequence> * </xsd:complexType> */ if (element == null) { throw new ArgumentNullException(nameof(element)); } var ns = element.GetDefaultNamespace(); if (ns == null) { throw new ArgumentNullException(nameof(ns)); } var trk = new Track(); element.SetValueFromElement(ns + _name, val => trk.Name = val); element.SetValueFromElement(ns + _cmt, val => trk.Comment = val); element.SetValueFromElement(ns + _desc, val => trk.Description = val); element.SetValueFromElement(ns + _src, val => trk.Source = val); foreach (var link in element.Elements(ns + _link)) { trk.Add(Link.Parse(link)); } element.SetValueFromElement(ns + _number, val => trk.Number = int.Parse(val)); element.SetValueFromElement(ns + _type, val => trk.Type = val); foreach (var trackSegment in element.Elements(ns + _trkseg)) { trk.Add(TrackSegment.Parse(trackSegment)); } return(trk); }
public void Add(TrackSegment seg) => _trackSegments.Add(seg);
public void Add(TrackSegment seg) => GetLastTrack().Add(seg);