Exemplo n.º 1
0
        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;
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 private void ReadMetadataExtensions(XmlReader reader, GpxMetadata metadata)
 {
     SkipElement(reader);
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 /// <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)
 {
 }