void IXmlSerializable.ReadXml(XmlReader reader) { // osm.api.version sometimes has attributes, sometimes just a value if (reader.HasAttributes) { this.Minimum = reader.GetAttributeDouble("minimum"); this.Maximum = reader.GetAttributeDouble("maximum"); } else if (!reader.IsEmptyElement) { reader.Read(); if (double.TryParse(reader.Value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out double value)) { this.Maximum = value; this.Minimum = value; } } }
void IXmlSerializable.ReadXml(XmlReader reader) { reader.MoveToContent(); this.Version = reader.GetAttributeDouble("version"); this.Generator = reader.GetAttribute("generator"); List <OsmGeoResult> results = null; while (reader.Read() && reader.MoveToContent() != XmlNodeType.None) { if (reader.Name == "node") { if (results == null) { results = new List <OsmGeoResult>(); } var nodeResult = new NodeResult(); (nodeResult as IXmlSerializable).ReadXml(reader); results.Add(nodeResult); } else if (reader.Name == "way") { if (results == null) { results = new List <OsmGeoResult>(); } var wayResult = new WayResult(); (wayResult as IXmlSerializable).ReadXml(reader); results.Add(wayResult); } else if (reader.Name == "relation") { if (results == null) { results = new List <OsmGeoResult>(); } var relationResult = new RelationResult(); (relationResult as IXmlSerializable).ReadXml(reader); results.Add(relationResult); } else { if (results == null) { results = new List <OsmGeoResult>(); } return; } } if (results != null) { this.Results = results.ToArray(); } }
void IXmlSerializable.ReadXml(XmlReader reader) { this.Id = reader.GetAttributeInt64("id"); this.Version = reader.GetAttributeInt32("version"); this.Latitude = reader.GetAttributeDouble("lat"); this.Longitude = reader.GetAttributeDouble("lon"); this.ChangeSetId = reader.GetAttributeInt64("changeset"); this.TimeStamp = reader.GetAttributeDateTime("timestamp"); this.UserId = reader.GetAttributeInt32("uid"); this.UserName = reader.GetAttribute("user"); this.Visible = reader.GetAttributeBool("visible"); TagsCollection tags = null; while (reader.Read() && reader.MoveToContent() != XmlNodeType.None) { if (reader.Name == "tag") { if (tags == null) { tags = new TagsCollection(); } tags.Add(new Tag() { Key = reader.GetAttribute("k"), Value = reader.GetAttribute("v") }); } else { if (tags != null) { this.Tags = tags; } return; } } if (tags != null) { this.Tags = tags; } }
private Track ReadTrack(XmlReader reader) { reader.AssertElementStart(Keys.Track); Track track = new Track() { Disc = reader.GetAttributeInt32(Keys.Disc, 0), Position = reader.GetAttributeInt32(Keys.Position, 0), Title = reader.GetAttributeOrNull(Keys.Title), JoinedArtists = reader.GetAttributeOrNull(Keys.JoinedArtists), RelativeFilename = reader.GetAttributeOrNull(Keys.RelativeFilename), DynamicRange = reader.GetAttributeDouble(Keys.DynamicRange, double.NaN), ReplayGainTrackGain = reader.GetAttributeDouble(Keys.TrackGain, double.NaN), ReplayGainTrackPeak = reader.GetAttributeDouble(Keys.TrackPeak, double.NaN), }; if (reader.IsEmptyElement) { return(track); } while (reader.Read()) { if (reader.IsElementEnd(Keys.Track)) { break; } if (reader.IsElementStart(Keys.Artists)) { this.ReadTrackArtists(reader, track); } else { throw new FormatException(InvalidXmlDatabase); } } return(track); }
void IXmlSerializable.ReadXml(XmlReader reader) { this.Version = reader.GetAttributeDouble("version"); this.Generator = reader.GetAttribute("generator"); List <Node> nodes = null; List <Way> ways = null; List <Relation> relations = null; List <Changeset> changesets = null; reader.GetElements( new Tuple <string, Action>( "api", () => { this.Api = new Capabilities(); (this.Api as IXmlSerializable).ReadXml(reader); reader.Read(); }), new Tuple <string, Action>( "bounds", () => { this.Bounds = new Bounds(); (this.Bounds as IXmlSerializable).ReadXml(reader); }), new Tuple <string, Action>( "node", () => { var node = new Node(); (node as IXmlSerializable).ReadXml(reader); if (nodes == null) { nodes = new List <Node>(); } nodes.Add(node); }), new Tuple <string, Action>( "way", () => { var way = new Way(); (way as IXmlSerializable).ReadXml(reader); if (ways == null) { ways = new List <Way>(); } ways.Add(way); }), new Tuple <string, Action>( "relation", () => { var relation = new Relation(); (relation as IXmlSerializable).ReadXml(reader); if (relations == null) { relations = new List <Relation>(); } relations.Add(relation); }), new Tuple <string, Action>( "changeset", () => { var changeset = new Changeset(); (changeset as IXmlSerializable).ReadXml(reader); if (changesets == null) { changesets = new List <Changeset>(); } changesets.Add(changeset); })); if (nodes != null) { this.Nodes = nodes.ToArray(); } if (ways != null) { this.Ways = ways.ToArray(); } if (relations != null) { this.Relations = relations.ToArray(); } if (changesets != null) { this.Changesets = changesets.ToArray(); } }
void IXmlSerializable.ReadXml(XmlReader reader) { reader.MoveToContent(); this.Generator = reader.GetAttribute("generator"); this.Version = reader.GetAttributeDouble("version"); List <OsmGeo> creates = new List <OsmGeo>();; List <OsmGeo> modifies = new List <OsmGeo>();; List <OsmGeo> deletes = new List <OsmGeo>();; reader.GetElements( new Tuple <string, Action>( "create", () => { if (reader.IsEmptyElement) { reader.Read(); return; } reader.Read(); while ((reader.Name == "node" || reader.Name == "way" || reader.Name == "relation")) { creates.Add(OsmChange.ReadOsmGeo(reader)); if (reader.NodeType == XmlNodeType.EndElement && (reader.Name == "node" || reader.Name == "way" || reader.Name == "relation")) { reader.Read(); } } reader.Read(); }), new Tuple <string, Action>( "modify", () => { if (reader.IsEmptyElement) { reader.Read(); return; } reader.Read(); while ((reader.Name == "node" || reader.Name == "way" || reader.Name == "relation")) { modifies.Add(OsmChange.ReadOsmGeo(reader)); if (reader.NodeType == XmlNodeType.EndElement && (reader.Name == "node" || reader.Name == "way" || reader.Name == "relation")) { reader.Read(); } } reader.Read(); }), new Tuple <string, Action>( "delete", () => { if (reader.IsEmptyElement) { reader.Read(); return; } reader.Read(); while ((reader.Name == "node" || reader.Name == "way" || reader.Name == "relation")) { deletes.Add(OsmChange.ReadOsmGeo(reader)); if (reader.NodeType == XmlNodeType.EndElement && (reader.Name == "node" || reader.Name == "way" || reader.Name == "relation")) { reader.Read(); } } reader.Read(); })); this.Create = creates.ToArray(); this.Modify = modifies.ToArray(); this.Delete = deletes.ToArray(); }
void IXmlSerializable.ReadXml(XmlReader reader) { this.Maximum = reader.GetAttributeDouble("maximum"); }
void IXmlSerializable.ReadXml(XmlReader reader) { this.Version = reader.GetAttributeDouble("version"); this.Generator = reader.GetAttribute("generator"); List <Node> nodes = null; List <Way> ways = null; List <Relation> relations = null; List <Changeset> changesets = null; List <GpxFile> gpxFiles = null; List <User> users = null; List <Note> notes = null; reader.GetElements( new Tuple <string, Action>( "api", () => { this.Api = new Capabilities(); (this.Api as IXmlSerializable).ReadXml(reader); }), new Tuple <string, Action>( "bounds", () => { this.Bounds = new Bounds(); (this.Bounds as IXmlSerializable).ReadXml(reader); reader.Read(); }), new Tuple <string, Action>( "node", () => { var node = new Node(); (node as IXmlSerializable).ReadXml(reader); if (nodes == null) { nodes = new List <Node>(); } nodes.Add(node); }), new Tuple <string, Action>( "way", () => { var way = new Way(); (way as IXmlSerializable).ReadXml(reader); if (ways == null) { ways = new List <Way>(); } ways.Add(way); }), new Tuple <string, Action>( "relation", () => { var relation = new Relation(); (relation as IXmlSerializable).ReadXml(reader); if (relations == null) { relations = new List <Relation>(); } relations.Add(relation); }), new Tuple <string, Action>( "changeset", () => { var changeset = new Changeset(); (changeset as IXmlSerializable).ReadXml(reader); if (changesets == null) { changesets = new List <Changeset>(); } changesets.Add(changeset); }), new Tuple <string, Action>( "user", () => { var user = new User(); (user as IXmlSerializable).ReadXml(reader); if (users == null) { users = new List <User>(); } users.Add(user); }), new Tuple <string, Action>( "note", () => { var note = new Note(); (note as IXmlSerializable).ReadXml(reader); if (note.Id.HasValue) // Ignore Notes missing content. { if (notes == null) { notes = new List <Note>(); } notes.Add(note); } }), new Tuple <string, Action>( "policy", () => { this.Policy = new Policy(); (this.Policy as IXmlSerializable).ReadXml(reader); }), new Tuple <string, Action>( "permissions", () => { this.Permissions = new Permissions(); (this.Permissions as IXmlSerializable).ReadXml(reader); }), new Tuple <string, Action>( "preferences", () => { this.Preferences = new Preferences(); (this.Preferences as IXmlSerializable).ReadXml(reader); }), new Tuple <string, Action>( "gpx_file", () => { var gpxFile = new GpxFile(); (gpxFile as IXmlSerializable).ReadXml(reader); if (gpxFiles == null) { gpxFiles = new List <GpxFile>(); } gpxFiles.Add(gpxFile); })); if (nodes != null) { this.Nodes = nodes.ToArray(); } if (ways != null) { this.Ways = ways.ToArray(); } if (relations != null) { this.Relations = relations.ToArray(); } if (changesets != null) { this.Changesets = changesets.ToArray(); } if (gpxFiles != null) { this.GpxFiles = gpxFiles.ToArray(); } if (users != null) { if (users.Count == 1) { this.User = users[0]; } else { this.Users = users.ToArray(); } } if (notes != null) { this.Notes = notes.ToArray(); } }
protected Release ReadRelease(XmlReader reader) { reader.AssertElementStart(Keys.Release); Release release = new Release(); release.JoinedAlbumArtists = reader.GetAttributeOrNull(Keys.JoinedAlbumArtists); release.Title = reader.GetAttributeOrNull(Keys.Title); release.ReleaseDate = ReleaseDate.Parse(reader.GetAttributeOrNull(Keys.ReleaseDate)); release.OriginalReleaseDate = ReleaseDate.Parse(reader.GetAttributeOrNull(Keys.OriginalReleaseDate)); release.CatalogNumber = reader.GetAttributeOrNull(Keys.CatalogNumber); release.Label = reader.GetAttributeOrNull(Keys.Label); release.Country = reader.GetAttributeOrNull(Keys.Country); release.FlagMessage = reader.GetAttributeOrNull(Keys.FlagMessage); release.IsFlagged = release.FlagMessage != null; release.Notes = reader.GetAttributeOrNull(Keys.Notes); release.WikipediaPageName = reader.GetAttributeOrNull(Keys.WikipediaPageName); release.DiscogsReleaseId = reader.GetAttributeInt32(Keys.DiscogsReleaseId, 0); release.DiscogsMasterId = reader.GetAttributeInt32(Keys.DiscogsMasterId, 0); release.Genre = reader.GetAttributeOrNull(Keys.Genre); release.Score = reader.GetAttributeInt32(Keys.Score, 0); release.DynamicRange = reader.GetAttributeDouble(Keys.DynamicRange, double.NaN); release.ReplayGainAlbumGain = reader.GetAttributeDouble(Keys.AlbumGain, double.NaN); release.ReplayGainAlbumPeak = reader.GetAttributeDouble(Keys.AlbumPeak, double.NaN); if (reader.GetAttributeOrNull(Keys.DateAdded) != null) { release.DateAdded = new DateTime(reader.GetAttributeInt64(Keys.DateAdded, 0)); } if (reader.GetAttributeOrNull(Keys.DateAudioModified) != null) { release.DateAudioModified = new DateTime(reader.GetAttributeInt64(Keys.DateAudioModified, 0)); } if (reader.GetAttributeOrNull(Keys.DateModified) != null) { release.DateModified = new DateTime(reader.GetAttributeInt64(Keys.DateModified, 0)); } if (reader.IsEmptyElement) { throw new FormatException(InvalidXmlDatabase); } while (reader.Read()) { if (reader.IsElementEnd(Keys.Release)) { break; } if (reader.IsElementStart(Keys.Artists)) { this.ReadArtists(reader, release); } else if (reader.IsElementStart(Keys.Tracks)) { this.ReadTracks(reader, release); } else if (reader.IsElementStart(Keys.Images)) { this.ReadImages(reader, release); } else if (reader.IsElementStart(Keys.AdditionalFiles)) { this.ReadAdditionalFiles(reader, release); } } return release; }
private Track ReadTrack(XmlReader reader) { reader.AssertElementStart(Keys.Track); Track track = new Track() { Disc = reader.GetAttributeInt32(Keys.Disc, 0), Position = reader.GetAttributeInt32(Keys.Position, 0), Title = reader.GetAttributeOrNull(Keys.Title), JoinedArtists = reader.GetAttributeOrNull(Keys.JoinedArtists), RelativeFilename = reader.GetAttributeOrNull(Keys.RelativeFilename), DynamicRange = reader.GetAttributeDouble(Keys.DynamicRange, double.NaN), ReplayGainTrackGain = reader.GetAttributeDouble(Keys.TrackGain, double.NaN), ReplayGainTrackPeak = reader.GetAttributeDouble(Keys.TrackPeak, double.NaN), }; if (reader.IsEmptyElement) { return track; } while (reader.Read()) { if (reader.IsElementEnd(Keys.Track)) { break; } if (reader.IsElementStart(Keys.Artists)) { this.ReadTrackArtists(reader, track); } else { throw new FormatException(InvalidXmlDatabase); } } return track; }
protected Release ReadRelease(XmlReader reader) { reader.AssertElementStart(Keys.Release); Release release = new Release(); release.JoinedAlbumArtists = reader.GetAttributeOrNull(Keys.JoinedAlbumArtists); release.Title = reader.GetAttributeOrNull(Keys.Title); release.ReleaseDate = ReleaseDate.Parse(reader.GetAttributeOrNull(Keys.ReleaseDate)); release.OriginalReleaseDate = ReleaseDate.Parse(reader.GetAttributeOrNull(Keys.OriginalReleaseDate)); release.CatalogNumber = reader.GetAttributeOrNull(Keys.CatalogNumber); release.Label = reader.GetAttributeOrNull(Keys.Label); release.Country = reader.GetAttributeOrNull(Keys.Country); release.FlagMessage = reader.GetAttributeOrNull(Keys.FlagMessage); release.IsFlagged = release.FlagMessage != null; release.Notes = reader.GetAttributeOrNull(Keys.Notes); release.WikipediaPageName = reader.GetAttributeOrNull(Keys.WikipediaPageName); release.DiscogsReleaseId = reader.GetAttributeInt32(Keys.DiscogsReleaseId, 0); release.DiscogsMasterId = reader.GetAttributeInt32(Keys.DiscogsMasterId, 0); release.Genre = reader.GetAttributeOrNull(Keys.Genre); release.Score = reader.GetAttributeInt32(Keys.Score, 0); release.DynamicRange = reader.GetAttributeDouble(Keys.DynamicRange, double.NaN); release.ReplayGainAlbumGain = reader.GetAttributeDouble(Keys.AlbumGain, double.NaN); release.ReplayGainAlbumPeak = reader.GetAttributeDouble(Keys.AlbumPeak, double.NaN); if (reader.GetAttributeOrNull(Keys.DateAdded) != null) { release.DateAdded = new DateTime(reader.GetAttributeInt64(Keys.DateAdded, 0)); } if (reader.GetAttributeOrNull(Keys.DateAudioModified) != null) { release.DateAudioModified = new DateTime(reader.GetAttributeInt64(Keys.DateAudioModified, 0)); } if (reader.GetAttributeOrNull(Keys.DateModified) != null) { release.DateModified = new DateTime(reader.GetAttributeInt64(Keys.DateModified, 0)); } if (reader.IsEmptyElement) { throw new FormatException(InvalidXmlDatabase); } while (reader.Read()) { if (reader.IsElementEnd(Keys.Release)) { break; } if (reader.IsElementStart(Keys.Artists)) { this.ReadArtists(reader, release); } else if (reader.IsElementStart(Keys.Tracks)) { this.ReadTracks(reader, release); } else if (reader.IsElementStart(Keys.Images)) { this.ReadImages(reader, release); } else if (reader.IsElementStart(Keys.AdditionalFiles)) { this.ReadAdditionalFiles(reader, release); } } return(release); }