Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public void Add(TrackSegment seg) => _trackSegments.Add(seg);
Ejemplo n.º 3
0
 public void Add(TrackSegment seg) => GetLastTrack().Add(seg);