Pues si lo que necesitas es ir enviar el propio fichero XML sin querer parsearlo (al vuelo) es bien sencillo:
En el lado del envío del fichero:
- Usas un Stream para leer el archivo.
- Para cada línea que vayas leyendo la envías por el socket hasta el final del archivo
- Mandas una señal al socket destino para decir que puede cerrar la comunicación. (Por ejemplo la palabra "end_of_file").
- Cierras ambos streams.
En el lado donde se recibe el fichero:
- Usas un bucle contínuo que espera lineas de texto provenientes del socket hasta encontrar la palabra "end_of_file"
- Para cada linea que llegue la vas escribiendo en un fichero nuevo.
- Cuando llegue "end_of_file" cierras los 2 streams.
Hay otras formas de mandarlo, por ejemplo usando el protocolo HTTP, o un stream binario, pero si estás aprendiendo eso es lo que se usa.
Si lo que buscas es ir parseándolo al vuelo, aquí tienes la solución:
http://stackoverflow.com/questions/7373567/java-how-to-read-and-write-xml-files