/* * <!ELEMENT node (tag*)> * <!ATTLIST node id CDATA #REQUIRED> * <!ATTLIST node lat CDATA #REQUIRED> * <!ATTLIST node lon CDATA #REQUIRED> * <!ATTLIST node changeset CDATA #IMPLIED> * <!ATTLIST node visible (true|false) #REQUIRED> * <!ATTLIST node user CDATA #IMPLIED> * <!ATTLIST node timestamp CDATA #IMPLIED> * */ public static OSMNode ParseNode(XmlNode node) { OSMNode osmNode = new OSMNode(); //bool keep = false; // parse node-attributes foreach (XmlAttribute attribute in node.Attributes) { //string name = ; switch (attribute.Name) { case "id": osmNode.Id = long.Parse(attribute.Value); break; case "lat": osmNode.Latitude = float.Parse(attribute.Value, CultureInfo.CreateSpecificCulture("en-US")); break; case "lon": osmNode.Longitude = float.Parse(attribute.Value, CultureInfo.CreateSpecificCulture("en-US")); break; case "visible": osmNode.Visible = bool.Parse(attribute.Value); //keep = osmNode.visible; break; case "version": osmNode.version = int.Parse(attribute.Value); break; default: break; } } foreach (XmlNode child in node.ChildNodes) { if (child.Name == "tag") { //osmNode.AddTag(OSMParser.ReadKeyValue(child)); osmNode.AddTag(node.Attributes[0].Value, node.Attributes[1].Value); } } return(osmNode); }
private OSMNode ParseOSMNode(XmlTextReader xmlReader) { OSMNode node = new OSMNode(long.Parse(xmlReader.GetAttribute("id")), float.Parse(xmlReader.GetAttribute("lat")), float.Parse(xmlReader.GetAttribute("lon"))); string childs = xmlReader.ReadOuterXml(); XmlTextReader outerXmlReader = new XmlTextReader(new System.IO.StringReader(childs)); outerXmlReader.MoveToContent(); while (outerXmlReader.Read()) { if (outerXmlReader.NodeType.Equals(XmlNodeType.Element) && outerXmlReader.LocalName.Equals("tag")) { node.AddTag(outerXmlReader.GetAttribute("k"), outerXmlReader.GetAttribute("v")); } } return(node); }