Beispiel #1
0
    /*
     * <!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);
    }
Beispiel #2
0
    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);
    }