public Environment(Node node) throws MalformedURLException, XPathExpressionException {
		this.methods = new HashMap<String, ServiceMethod>();
		this.properties = new HashMap<String, String>();
		
		this.setRawEndpoint(Utilities.selectSingleText(node, "./@c:url", XMLLabels.STANDARD_NAMESPACES));
		this.name = Utilities.selectSingleText(node, "./@c:name", XMLLabels.STANDARD_NAMESPACES);

		try {
			logger.info("Searching for properties.");
			NodeList nodes = Utilities.selectNodes(node, "./c:properties/c:property", XMLLabels.STANDARD_NAMESPACES);
			for(int i = 0; i < nodes.getLength(); ++i) {
				Node propertyNode = nodes.item(i);
				if(propertyNode != null) {
					String propVal = propertyNode.getTextContent();

					String propName = Utilities.selectSingleText(propertyNode, "./@c:name", XMLLabels.STANDARD_NAMESPACES);
					if(!Utilities.isNullOrWhitespace(propName)) {
						this.properties.put(propName, propVal);
					}
				}
			}
		} catch (Exception e) {
			logger.error("Error searching for methods.", e);
		}
		
		try {
			logger.info("Searching for methods.");
			NodeList nodes = Utilities.selectNodes(node, "./c:methods/c:method", XMLLabels.STANDARD_NAMESPACES);
			for(int i = 0; i < nodes.getLength(); ++i) {
				Node methodNode = nodes.item(i);
				ServiceMethod method =  new ServiceMethod(methodNode);
				this.methods.put(method.getDisplayName(), method);
			}
		} catch (Exception e) {
			logger.error("Error searching for methods.", e);
		}
	}