O método mais fácil é usar JAXB.
Em linhas gerais:
Pegue o seu arquivo .XSD
Rode o programa xjc com esse arquivo .XSD como entrada (o xjc que vem com o seu framework preferido de web services, tal como o Sun Web Services Toolkit).
Esse programa xjc cria uma série de classes que devem ser usadas para preencher os valores a serem escritos no XML. Se puder usar o toolkit versão 2.0 da Sun, ou então o Mustang (que já vem com o xjc incorporado), o código gerado é todo compatível com o Java 5 (annotations etc.)
É mais simples fazer que falar. É uma das APIs mais fáceis de usar em Web Services (uma vez que você vir um exemplo pronto, vai ver que é super-fácil de usar).
Thingol, onde eu posso estar econtrando esse software?
E se eu tiver “dependência” entre varios XSDs? Tipo, eu tenho 4 XSDs e um “extend” de outro, que “extend” de outro… Enfim, existem dependencias entre esses (ou alguns desses) XSDs. Fazendo isso que você mencionou vai funcionar?
a) Quanto ao software, o nome certo é “Java Web Services Developer Pack 2.0”. Nada que uma boa busca no site da Sun não faça por você.
b) Agora, quanto ao relacionamento entre XSDs, já não sei lhe dizer exatamente o que fazer.
Uma vez que tive de mexer com XSDs, para evitar alguns problemas (do tipo "o XSD especifica uma data no formato XSD, mas o software que vai ler o XML que o Java gerou não é totalmente compatível com o XSD e você tem de trocar o formato para um incorreto mas compatível com o outro software) tive de adaptar algumas coisas - como passar alguns tipos de “date” para “string”. No seu caso, se o xjc não suportar isso corretamente (mas acho que ele deve fazer direitinho…), talvez você tenha de copiar algumas coisas do XSD “pai” para os XSDs “filhos”.
o xjc gera classes a partir de xsds… existe alguma classe que faça esse trabalho de ler o xml e gerar outras classes java?
ou melhor ainda, um plugin do eclipse que faça isso pra gente pro exemplo: existe a opção no eclipse assim: new-> jaxb-> schema from jaxb classes…
poderia haver algo inverso (classes from schema)? existe plugin pra isso?