The Definitive Guide to Data Quality
I think your approach with n tButterOutputs is the right way to do it. Sadly for you tBufferOutput has a special function in Talend: transferring data between parent and child jobs. Also there is only one buffer.
You might want to use multiple tHashOutput and tHashInputs for that. That way you can read them into the tAdvancedFileOutputXML component.
Hope that helps