public XmlSiteMapBuilder(
            IXmlSource xmlSource,
            ISiteMapXmlReservedAttributeNameProvider reservedAttributeNameProvider,
            INodeKeyGenerator nodeKeyGenerator,
            IDynamicNodeBuilder dynamicNodeBuilder,
            ISiteMapNodeFactory siteMapNodeFactory,
            ISiteMapXmlNameProvider xmlNameProvider
            )
        {
            if (xmlSource == null)
                throw new ArgumentNullException("xmlSource");
            if (reservedAttributeNameProvider == null)
                throw new ArgumentNullException("reservedAttributeNameProvider");
            if (nodeKeyGenerator == null)
                throw new ArgumentNullException("nodeKeyGenerator");
            if (dynamicNodeBuilder == null)
                throw new ArgumentNullException("dynamicNodeBuilder");
            if (siteMapNodeFactory == null)
                throw new ArgumentNullException("siteMapNodeFactory");
            if (xmlNameProvider == null)
                throw new ArgumentNullException("xmlNameProvider");

            this.xmlSource = xmlSource;
            this.reservedAttributeNameProvider = reservedAttributeNameProvider;
            this.nodeKeyGenerator = nodeKeyGenerator;
            this.dynamicNodeBuilder = dynamicNodeBuilder;
            this.siteMapNodeFactory = siteMapNodeFactory;
            this.xmlNameProvider = xmlNameProvider;
        }
        public IList<string> GetAttributeValues(IXmlSource xmlSource, string attributeName)
        {
            var xml = xmlSource.GetXml();
            xmlNameProvider.FixXmlNamespaces(xml);

            var result = xml.Element(xmlNameProvider.RootName)
                            .Descendants()
                            .Select(e => (string)e.Attribute(attributeName))
                            .Where(x => x != null)
                            .Distinct()
                            .ToList();
            return result;
        }
예제 #3
0
        /// <summary>
        /// Downloads an xml from an url.
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        private IXmlSource DownloadXml(string url)
        {
            // download the xml string.
            string xml = this.DownloadString(url);

            // parse the xml if it exists.
            IXmlSource source = null;

            if (!string.IsNullOrEmpty(xml))
            {
                source = new XmlStringSource(xml);
            }
            return(source);
        }
예제 #4
0
        public IList <string> GetAttributeValues(IXmlSource xmlSource, string attributeName)
        {
            var xml = xmlSource.GetXml();

            xmlNameProvider.FixXmlNamespaces(xml);

            var result = xml.Element(xmlNameProvider.RootName)
                         .Descendants()
                         .Select(e => (string)e.Attribute(attributeName))
                         .Where(x => x != null)
                         .Distinct()
                         .ToList();

            return(result);
        }
        public XmlSiteMapNodeProvider(
            bool includeRootNode,
            bool useNestedDynamicNodeRecursion,
            IXmlSource xmlSource,
            ISiteMapXmlNameProvider xmlNameProvider
            )
        {
            if (xmlSource == null)
                throw new ArgumentNullException("xmlSource");
            if (xmlNameProvider == null)
                throw new ArgumentNullException("xmlNameProvider");

            this.includeRootNode = includeRootNode;
            this.useNestedDynamicNodeRecursion = useNestedDynamicNodeRecursion;
            this.xmlSource = xmlSource;
            this.xmlNameProvider = xmlNameProvider;
        }
예제 #6
0
        /// <summary>
        /// Constructor for implementing the component from XML.
        /// </summary>
        /// <param name="parent">Parent Gwen control of the component.</param>
        /// <param name="xmlSource">XML to be a view of the component.</param>
        protected Component(ControlBase parent, IXmlSource xmlSource)
        {
            Stream stream = xmlSource.GetStream();

            ControlBase view = null;

            using (Parser parser = new Parser(stream))
            {
                view = parser.Parse(parent);
            }

            if (view == null)
            {
                throw new NullReferenceException("View must not be null.");
            }

            view.Component = this;
            m_View         = view;
        }
예제 #7
0
        public XmlSiteMapBuilder(
            IXmlSource xmlSource,
            ISiteMapXmlReservedAttributeNameProvider reservedAttributeNameProvider,
            INodeKeyGenerator nodeKeyGenerator,
            IDynamicNodeBuilder dynamicNodeBuilder,
            ISiteMapNodeFactory siteMapNodeFactory,
            ISiteMapXmlNameProvider xmlNameProvider
            )
        {
            if (xmlSource == null)
            {
                throw new ArgumentNullException("xmlSource");
            }
            if (reservedAttributeNameProvider == null)
            {
                throw new ArgumentNullException("reservedAttributeNameProvider");
            }
            if (nodeKeyGenerator == null)
            {
                throw new ArgumentNullException("nodeKeyGenerator");
            }
            if (dynamicNodeBuilder == null)
            {
                throw new ArgumentNullException("dynamicNodeBuilder");
            }
            if (siteMapNodeFactory == null)
            {
                throw new ArgumentNullException("siteMapNodeFactory");
            }
            if (xmlNameProvider == null)
            {
                throw new ArgumentNullException("xmlNameProvider");
            }

            this.xmlSource = xmlSource;
            this.reservedAttributeNameProvider = reservedAttributeNameProvider;
            this.nodeKeyGenerator   = nodeKeyGenerator;
            this.dynamicNodeBuilder = dynamicNodeBuilder;
            this.siteMapNodeFactory = siteMapNodeFactory;
            this.xmlNameProvider    = xmlNameProvider;
        }
        public XmlSiteMapNodeProvider(
            bool includeRootNode,
            bool useNestedDynamicNodeRecursion,
            IXmlSource xmlSource,
            ISiteMapXmlNameProvider xmlNameProvider
            )
        {
            if (xmlSource == null)
            {
                throw new ArgumentNullException("xmlSource");
            }
            if (xmlNameProvider == null)
            {
                throw new ArgumentNullException("xmlNameProvider");
            }

            this.includeRootNode = includeRootNode;
            this.useNestedDynamicNodeRecursion = useNestedDynamicNodeRecursion;
            this.xmlSource       = xmlSource;
            this.xmlNameProvider = xmlNameProvider;
        }
예제 #9
0
 /// <summary>
 /// Creates a new osm document based on an xml source.
 /// </summary>
 /// <param name="source"></param>
 public OsmDocument(IXmlSource source)
 {
     _source = source;
 }
예제 #10
0
 public void Close()
 {
     this._source    = (IXmlSource)null;
     this._osmObject = (object)null;
 }
예제 #11
0
 /// <summary>
 /// Closes the osm document.
 /// </summary>
 public void Close()
 {
     _source    = null;
     _osmObject = null;
 }
 public virtual XmlSiteMapNodeProvider Create(IXmlSource xmlSource, bool includeRootNode)
 {
     return this.Create(xmlSource, includeRootNode, false);
 }
 public virtual XmlSiteMapNodeProvider Create(IXmlSource xmlSource)
 {
     return this.Create(xmlSource, true, false);
 }
예제 #14
0
 /// <summary>
 /// Closes this data source.
 /// </summary>
 public void Close()
 {
     _kml_object = null;
     _source = null;
 }
예제 #15
0
 public GpxDocument(IXmlSource source)
 {
     this._source  = source;
     this._version = GpxVersion.Unknown;
 }
예제 #16
0
 /// <summary>
 /// Closes this search document.
 /// </summary>
 public void Close()
 {
     _search_object = null;
     _source        = null;
 }
예제 #17
0
 /// <summary>
 /// Closes this data source.
 /// </summary>
 public void Close()
 {
     _kml_object = null;
     _source     = null;
 }
예제 #18
0
 /// <summary>
 /// Creates a new search document based on an xml source.
 /// </summary>
 /// <param name="source"></param>
 public SearchDocument(IXmlSource source)
 {
     _source  = source;
     _version = SearchVersion.Unknown;
 }
예제 #19
0
 /// <summary>
 /// Closes this search document.
 /// </summary>
 public void Close()
 {
     _search_object = null;
     _source = null;
 }
예제 #20
0
 /// <summary>
 /// Creates a new osm document based on an xml source.
 /// </summary>
 /// <param name="source"></param>
 public OsmDocument(IXmlSource source)
 {
     _source = source;
 }
예제 #21
0
 /// <summary>
 /// Closes the osm document.
 /// </summary>
 public void Close()
 {
     _source = null;
     _osmObject = null;
 }
예제 #22
0
 public KmlDocument(IXmlSource source)
 {
     this._source  = source;
     this._version = KmlVersion.Unknown;
 }
예제 #23
0
 /// <summary>
 /// Creates a new kml document based on an xml source.
 /// </summary>
 /// <param name="source"></param>
 public GpxDocument(IXmlSource source)
 {
     _source = source;
     _version = GpxVersion.Unknown;
 }
 public virtual XmlSiteMapNodeProvider Create(IXmlSource xmlSource)
 {
     return(this.Create(xmlSource, true, false));
 }
예제 #25
0
        /// <summary>
        /// Geocodes and returns the result.
        /// </summary>
        /// <param name="street"></param>
        /// <param name="houseNumber"></param>
        /// <param name="country"></param>
        /// <param name="postalCode"></param>
        /// <param name="commune"></param>
        /// <returns></returns>
        public IGeoCoderResult Code(
            string country,
            string postalCode,
            string commune,
            string street,
            string houseNumber)
        {
            // build the request url.
            var builder = new StringBuilder();

            builder.Append(street);
            builder.Append(" ");
            builder.Append(houseNumber);
            builder.Append(" ");
            builder.Append(postalCode);
            builder.Append(" ");
            builder.Append(commune);
            builder.Append(" ");
            builder.Append(country);
            builder.Append(" ");
            string url = string.Format(System.Globalization.CultureInfo.InvariantCulture,
                                       _geocodingUrl + "&format=xml&polygon=1&addressdetails=1", builder);

            // create the source and get the xml.
            IXmlSource source = this.DownloadXml(url);

            // create the kml.
            var search_doc = new SearchDocument(source);

            // check if there are responses.
            var res = new GeoCoderResult();

            res.Accuracy = AccuracyEnum.UnkownLocationLevel;

            if (search_doc.Search is searchresults)
            {
                searchresults result_v1 = search_doc.Search as searchresults;
                if (result_v1.place != null && result_v1.place.Length > 0)
                {
                    double latitude;
                    double longitude;

                    if (double.TryParse(result_v1.place[0].lat, System.Globalization.NumberStyles.Float,
                                        System.Globalization.CultureInfo.InvariantCulture, out latitude)
                        &&
                        double.TryParse(result_v1.place[0].lon, System.Globalization.NumberStyles.Float,
                                        System.Globalization.CultureInfo.InvariantCulture, out longitude))
                    {
                        res.Latitude  = latitude;
                        res.Longitude = longitude;
                        res.Text      = result_v1.place[0].display_name;

                        switch (result_v1.place[0].@class)
                        {
                        case "place":
                            switch (result_v1.place[0].type)
                            {
                            case "town":
                                res.Accuracy = AccuracyEnum.TownLevel;
                                break;

                            case "house":
                                res.Accuracy = AccuracyEnum.AddressLevel;
                                break;
                            }
                            break;

                        case "highway":
                            res.Accuracy = AccuracyEnum.StreetLevel;
                            break;

                        case "boundary":
                            res.Accuracy = AccuracyEnum.PostalCodeLevel;
                            break;
                        }
                    }
                }
            }
            else if (search_doc.Search is OsmSharp.Xml.Nominatim.Reverse.v1.reversegeocode)
            {
                reversegeocode result_v1 = search_doc.Search as OsmSharp.Xml.Nominatim.Reverse.v1.reversegeocode;
                if (result_v1.result != null && result_v1.result.Length > 0)
                {
                    double latitude;
                    double longitude;

                    if (double.TryParse(result_v1.result[0].lat, System.Globalization.NumberStyles.Float,
                                        System.Globalization.CultureInfo.InvariantCulture, out latitude)
                        &&
                        double.TryParse(result_v1.result[0].lon, System.Globalization.NumberStyles.Float,
                                        System.Globalization.CultureInfo.InvariantCulture, out longitude))
                    {
                        res.Latitude  = latitude;
                        res.Longitude = longitude;
                        res.Text      = result_v1.result[0].Value;
                        res.Accuracy  = AccuracyEnum.UnkownLocationLevel;
                    }
                }
            }

            return(res);
        }
 public virtual XmlSiteMapNodeProvider Create(IXmlSource xmlSource, bool includeRootNode, bool useNestedDynamicNodeRecursion)
 {
     return new XmlSiteMapNodeProvider(includeRootNode, useNestedDynamicNodeRecursion, xmlSource, this.xmlNameProvider);
 }
예제 #27
0
 /// <summary>
 /// Creates a new kml document based on an xml source.
 /// </summary>
 /// <param name="source"></param>
 public KmlDocument(IXmlSource source)
 {
     _source = source;
     _version = KmlVersion.Unknown;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AppConfigConfigurationProvider"/> class.
 /// </summary>
 /// <param name="xmlSource">The XML source.</param>
 public AppConfigConfigurationProvider(IXmlSource xmlSource) : base(xmlSource)
 {
 }
예제 #29
0
 /// <summary>
 /// Creates a new search document based on an xml source.
 /// </summary>
 /// <param name="source"></param>
 public SearchDocument(IXmlSource source)
 {
     _source = source;
     _version = SearchVersion.Unknown;
 }
 public virtual XmlSiteMapNodeProvider Create(IXmlSource xmlSource, bool includeRootNode, bool useNestedDynamicNodeRecursion)
 {
     return(new XmlSiteMapNodeProvider(includeRootNode, useNestedDynamicNodeRecursion, xmlSource, this.xmlNameProvider));
 }
 public virtual XmlSiteMapNodeProvider Create(IXmlSource xmlSource, bool includeRootNode)
 {
     return(this.Create(xmlSource, includeRootNode, false));
 }
예제 #32
0
 /// <summary>
 /// Initializes a new instance of the <see cref="XmlConfigurationProviderBase"/> class.
 /// </summary>
 /// <param name="xmlSource">The XML source.</param>
 protected XmlConfigurationProviderBase(IXmlSource xmlSource)
 {
     Assert.ArgumentNotNull(xmlSource, "xmlSource");
     this.xmlSource = xmlSource;
 }