public static void ReadGPX(string fileName) { using (FileStream fs = new FileStream(fileName, FileMode.Open)) { using (GpxReader reader = new GpxReader(fs)) { while (reader.Read()) { switch (reader.ObjectType) { case GpxObjectType.Metadata: GpxMetadata metadata = reader.Metadata; Logger.Info("Metadata"); break; case GpxObjectType.WayPoint: GpxWayPoint waypoint = reader.WayPoint; Logger.Info("WayPoint"); break; case GpxObjectType.Route: GpxRoute route = reader.Route; Logger.Info("Route"); break; case GpxObjectType.Track: GpxTrack track = reader.Track; Logger.Info("Track"); break; } } } } }
public void WriteMetadata(GpxMetadata metadata) { Writer_.WriteStartElement("metadata"); if (!string.IsNullOrWhiteSpace(metadata.Name)) Writer_.WriteElementString("name", metadata.Name); if (!string.IsNullOrWhiteSpace(metadata.Description)) Writer_.WriteElementString("desc", metadata.Description); if (metadata.Author != null) WritePerson("author", metadata.Author); if (metadata.Copyright != null) WriteCopyright("copyright", metadata.Copyright); if (metadata.Link != null) WriteLink("link", metadata.Link); if (metadata.Time != default(DateTime)) Writer_.WriteElementString("time", ToGpxDateString(metadata.Time)); if (!string.IsNullOrWhiteSpace(metadata.Keywords)) Writer_.WriteElementString("keywords", metadata.Keywords); if (metadata.Bounds != null) WriteBounds("bounds", metadata.Bounds); Writer_.WriteEndElement(); }
public void WriteMetadata(GpxMetadata metadata) { Writer_.WriteStartElement("metadata"); if (metadata.Name != null) { Writer_.WriteElementString("name", metadata.Name); } if (metadata.Description != null) { Writer_.WriteElementString("desc", metadata.Description); } if (metadata.Author != null) { WritePerson("author", metadata.Author); } if (metadata.Copyright != null) { WriteCopyright("copyright", metadata.Copyright); } if (metadata.Link != null) { WriteLink("link", metadata.Link); } if (metadata.Time != null) { Writer_.WriteElementString("time", ToGpxDateString(metadata.Time.Value)); } if (metadata.Keywords != null) { Writer_.WriteElementString("keywords", metadata.Keywords); } if (metadata.Bounds != null) { WriteBounds("bounds", metadata.Bounds); } Writer_.WriteEndElement(); }
private GpxMetadata ReadGpxMetadata(XmlReader reader) { GpxMetadata metadata = new GpxMetadata(); if (reader.IsEmptyElement) return metadata; string elementName = reader.Name; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case "name": metadata.Name = ReadContentAsString(reader); break; case "desc": metadata.Description = ReadContentAsString(reader); break; case "author": metadata.Author = ReadGpxPerson(reader); break; case "copyright": metadata.Copyright = ReadGpxCopyright(reader); break; case "link": metadata.Link = ReadGpxLink(reader); break; case "time": metadata.Time = ReadContentAsDateTime(reader); break; case "keywords": metadata.Keywords = ReadContentAsString(reader); break; case "bounds": ReadGpxBounds(reader); break; case "extensions": ReadMetadataExtensions(reader, metadata); break; default: throw new FormatException(reader.Name); } break; case XmlNodeType.EndElement: if (reader.Name != elementName) throw new FormatException(reader.Name); return metadata; } } throw new FormatException(elementName); }
private void ReadMetadataExtensions(XmlReader reader, GpxMetadata metadata) { SkipElement(reader); }
private GpxMetadata ReadGpxMetadata() { GpxMetadata metadata = new GpxMetadata(); if (reader.IsEmptyElement) { return(metadata); } string elementName = reader.Name; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case GpxSymbol.Name: metadata.Name = reader.ReadElementContentAsString(); break; case "desc": metadata.Description = reader.ReadElementContentAsString(); break; case "author": metadata.Author = ReadGpxPerson(); break; case "copyright": metadata.Copyright = ReadGpxCopyright(); break; case "link": metadata.Link = ReadGpxLink(); break; case GpxSymbol.Time: metadata.Time = reader.ReadElementContentAsDateTime(); break; case "keywords": metadata.Keywords = reader.ReadElementContentAsString(); break; case "bounds": ReadGpxBounds(); break; default: reader.SkipElement(); break; } break; case XmlNodeType.EndElement: if (reader.Name != elementName) { throw new FormatException(reader.Name); } return(metadata); } } throw new FormatException(elementName); }
/// <summary> /// Invoked when the reader has moved past either the GPX metadata element or where it would /// have been. /// </summary> /// <param name="metadata"> /// The <see cref="GpxMetadata"/> that we read, guaranteed non-<see langword="null"/>. /// </param> /// <remarks> /// <para> /// This is guaranteed to be called once per GPX file, even if there is no metadata element. /// When there is no metadata element, <see cref="GpxMetadata.IsTrivial"/> will be /// <see langword="true"/>, and only <see cref="GpxMetadata.Creator"/> will be set. /// </para> /// <para> /// This will be called before any other method for a given GPX file. /// </para> /// </remarks> public virtual void VisitMetadata(GpxMetadata metadata) { }