Have you considered using XSLT to transform the file? If you already have an XSD then mapping the input columns to that should be trivial with a decent XML Development IDE. Check out XML Spy.
There are no special teachers of virtue, because virtue is taught by the whole community.
--Plato