При чтении и записи данных всегда используйте один и тот же тип потока. Если вы подаете поток непосредственно в парсер сакса, то вы не должны использовать DataOutputStream.
Просто используйте
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
bos.write(os.getBytes("UTF-8"));