code: public static Datapoint create(XMLReader r) throws KNXMLException
  	{
  		if (r.getPosition() != XMLReader.START_TAG)
  			r.read();
  		if (r.getPosition() == XMLReader.START_TAG) {
  			if (readDPType(r))
  				return new StateDP(r);
  			return new CommandDP(r);
  		}
  		throw new KNXMLException("no KNX datapoint", null, r.getLineNumber());
  	}
docs: Creates a new datapoint from XML input.
  <p>
  If the current XML element position is no start tag, the next element tag is read.
  The datapoint element is then expected to be the current element in the reader.
  
  @param r a XML reader
  @return the created datapoint, either of type {@link StateDP} or {@link CommandDP}
  @throws KNXMLException if the XML element is no datapoint or could not be read
  correctly