예제 #1
0
        public void WriteMetadata(GpxMetadata metadata)
        {
            Writer_.WriteStartElement("metadata");

            if (!IsNullOrWhiteSpace(metadata.Name))
            {
                Writer_.WriteElementString("name", metadata.Name);                                     //IsNullOrWhiteSpace
            }
            if (!IsNullOrWhiteSpace(metadata.Description))
            {
                Writer_.WriteElementString("desc", metadata.Description);                                            //IsNullOrWhiteSpace
            }
            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 (!IsNullOrWhiteSpace(metadata.Keywords))
            {
                Writer_.WriteElementString("keywords", metadata.Keywords);                                         //IsNullOrWhiteSpace
            }
            if (metadata.Bounds != null)
            {
                WriteBounds("bounds", metadata.Bounds);
            }

            Writer_.WriteEndElement();
        }
예제 #2
0
 private void ReadMetadataExtensions(XmlReader reader, GpxMetadata metadata)
 {
     SkipElement(reader);
 }
예제 #3
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);
        }