private void ParseCapability(WFS_Schemas.WFS_CapabilitiesType readWFSCaps, WFSCapabilities wfsCapabilities) { // Parse GetFeatureRequest wfsCapabilities.Capability = new WfsCapability(); wfsCapabilities.Capability.Requests = new WfsRequests(); wfsCapabilities.Capability.Requests.GetFeaturesRequest = new WfsGetFeaturesRequest(); wfsCapabilities.Capability.Requests.DescribeFeatureTypeRequest = new WfsDescribeFeatureTypeRequest(); for (int i = 0; i < readWFSCaps.Capability.Request.ItemsElementName.Length; i++) { ItemsChoiceType operation = readWFSCaps.Capability.Request.ItemsElementName[i]; if (operation == ItemsChoiceType.GetFeature) { GetFeatureTypeType getFeatureType = (GetFeatureTypeType)readWFSCaps.Capability.Request.Items[i]; // todo - fel i schema för format??? foreach (DCPTypeType dcpType in getFeatureType.DCPType) { if (dcpType.HTTP.IsNotEmpty()) { if (dcpType.HTTP[0].GetType() == typeof(GetType)) { wfsCapabilities.Capability.Requests.GetFeaturesRequest.GetUrl = ((GetType)dcpType.HTTP[0]).onlineResource; } else if (dcpType.HTTP[0].GetType() == typeof(PostType)) { wfsCapabilities.Capability.Requests.GetFeaturesRequest.PostUrl = ((PostType)dcpType.HTTP[0]).onlineResource; } } } } else if (operation == ItemsChoiceType.DescribeFeatureType) { DescribeFeatureTypeType describeFeatureType = (DescribeFeatureTypeType)readWFSCaps.Capability.Request.Items[i]; foreach (DCPTypeType dcpType in describeFeatureType.DCPType) { if (dcpType.HTTP.IsNotEmpty()) { if (dcpType.HTTP[0].GetType() == typeof(GetType)) { wfsCapabilities.Capability.Requests.DescribeFeatureTypeRequest.GetUrl = ((GetType)dcpType.HTTP[0]).onlineResource; } else if (dcpType.HTTP[0].GetType() == typeof(PostType)) { wfsCapabilities.Capability.Requests.DescribeFeatureTypeRequest.PostUrl = ((PostType)dcpType.HTTP[0]).onlineResource; } } } } } }
/// <summary> /// TBD ?!? /// </summary> public WFSCapabilities Parse(string xml) { WFS_Schemas.WFS_CapabilitiesType readWFSCaps = WFS_Schemas.WFS_CapabilitiesType.Deserialize(xml); var wfsCapabilities = new WFSCapabilities(); wfsCapabilities.Version = readWFSCaps.version; // Parse version ParseService(readWFSCaps, wfsCapabilities); ParseCapability(readWFSCaps, wfsCapabilities); ParseFeatureTypes(readWFSCaps, wfsCapabilities); ParseXml(xml, wfsCapabilities); return(wfsCapabilities); }