code: private static void parseValueElement(Element element,
  			ConfigurableEmitter.Value value) {
  		if (element == null) {
  			return;
  		}
  
  		String type = element.getAttribute("type");
  		String v = element.getAttribute("value");
  
  		if (type == null || type.length() == 0) {
  			// support for old style which did not write the type
  			if (value instanceof SimpleValue) {
  				((SimpleValue) value).setValue(Float.parseFloat(v));
  			} else if (value instanceof RandomValue) {
  				((RandomValue) value).setValue(Float.parseFloat(v));
  			} else {
  				Log.warn("problems reading element, skipping: " + element);
  			}
  		} else {
  			// type given: this is the new style
  			if (type.equals("simple")) {
  				((SimpleValue) value).setValue(Float.parseFloat(v));
  			} else if (type.equals("random")) {
  				((RandomValue) value).setValue(Float.parseFloat(v));
  			} else if (type.equals("linear")) {
  				String min = element.getAttribute("min");
  				String max = element.getAttribute("max");
  				String active = element.getAttribute("active");
  
  				NodeList points = element.getElementsByTagName("point");
  
  				ArrayList curve = new ArrayList();
  				for (int i = 0; i < points.getLength(); i++) {
  					Element point = (Element) points.item(i);
  
  					float x = Float.parseFloat(point.getAttribute("x"));
  					float y = Float.parseFloat(point.getAttribute("y"));
  
  					curve.add(new Vector2f(x, y));
  				}
  
  				((LinearInterpolator) value).setCurve(curve);
  				((LinearInterpolator) value).setMin(Integer.parseInt(min));
  				((LinearInterpolator) value).setMax(Integer.parseInt(max));
  				((LinearInterpolator) value).setActive("true".equals(active));
  			} else {
  				Log.warn("unkown type detected: " + type);
  			}
  		}
  	}
docs: Parse an XML element into a configured value
  
  @param element
  The XML element to parse
  @param value
  The value to configure based on the XML