private GpxLink ReadGpxLink(XmlReader reader) { GpxLink link = new GpxLink(); string elementName = reader.Name; bool isEmptyElement = reader.IsEmptyElement; while (reader.MoveToNextAttribute()) { switch (reader.Name) { case "href": link.Href = new Uri(reader.Value); break; } } if (isEmptyElement) { return(link); } while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case "text": link.Text = ReadContentAsString(reader); break; case "type": link.MimeType = ReadContentAsString(reader); break; default: throw new FormatException(reader.Name); } break; case XmlNodeType.EndElement: if (reader.Name != elementName) { throw new FormatException(reader.Name); } return(link); } } throw new FormatException(elementName); }
private void WriteLink(string elementName, GpxLink link) { Writer_.WriteStartElement(elementName); Writer_.WriteAttributeString("href", link.Href.ToString()); if (!IsNullOrWhiteSpace(link.Text)) { Writer_.WriteElementString("text", link.Text); //IsNullOrWhiteSpace } if (!IsNullOrWhiteSpace(link.MimeType)) { Writer_.WriteElementString("type", link.MimeType); //IsNullOrWhiteSpace } Writer_.WriteEndElement(); }