Eso se hace con una cabecera de HTTP que se llama If-Modified-Since, que permite decirle al servidor que quieres cierto recurso (tu xml) pero solo si ha sido modificado desde el momento que digas (normalmente el tiempo que te dio el servidor la última vez que bajaste el xml). En ese caso, el servidor te devolverá o el clásico 200 OK con el fichero o una respuesta sin contenido del tipo 304 NOT MODIFIED.
En Android (HttpURLConnection) tienes los métodos getLastModified para cuando te hayas bajado un xml guardar ese valor. Luego tienes el setIfModifiedSince que pasándole ese valor hará que el servidor devuelva un código HTTP_OK si el fichero es nuevo (y lo procesas como siempre) o devuelva un código HTTP_NOT_MODIFIED (y entonces no haces nada).