Validar xml com schema

Pessoal e o seguinte, eu recebo do meu cliente um arquivo xml com a seguinte estrutura

.
.
.
<tp_consulta>Consulta de Propriedade</tp_consulta>
 <consulta>
	<cd_item>0</cd_item>
	<qt_anos_pesquisa>5</qt_anos_pesquisa>
 	<pessoaFisica>
		<pessoa:nm_pessoa>Fabio Alves de Araujo Ebner</pessoa:nm_pessoa>
		<pessoa:cd_cpf>294.889.898-66</pessoa:cd_cpf>
		<pessoa:cd_rg xsi:nil="true"></pessoa:cd_rg>
		<pessoa:nm_mae xsi:nil="true"></pessoa:nm_mae>
		<pessoa:nm_pai xsi:nil="true"></pessoa:nm_pai>
		<pessoa:tp_estado_civil xsi:nil="true"></pessoa:tp_estado_civil>
		<pessoa:nm_conjuge xsi:nil="true"></pessoa:nm_conjuge>
		<pessoa:dt_nascimento xsi:nil="true"></pessoa:dt_nascimento>
	</pessoaFisica>
 	<resultado>
 		<tp_resultado_consulta>CONSTA</tp_resultado_consulta>
 		<ocorrencia>
 			<tp_livro>LV2</tp_livro>
 			<cd_numero_registro>111</cd_numero_registro>
 			<tp_onus>SIM</tp_onus>
 		</ocorrencia>
 		<ocorrencia>
 			<tp_livro>LV3T</tp_livro>
 			<cd_numero_registro>99</cd_numero_registro>
 			<tp_onus>NAO</tp_onus>
 		</ocorrencia>
 	</resultado>
 </consulta>
<consulta>
	<cd_item>1</cd_item>
	<qt_anos_pesquisa>5</qt_anos_pesquisa>
 	<pessoaJuridica>
		<pessoa:nm_pessoa>Dna Solution</pessoa:nm_pessoa>
		<pessoa:cd_cnpj>06.928.201/0001-30</pessoa:cd_cnpj>
	</pessoaJuridica>
 	<resultado>
 		<tp_resultado_consulta>NAO_CONSTA</tp_resultado_consulta>
 	</resultado>
</consulta>
 <consulta>
	<cd_item>2</cd_item>
	<qt_anos_pesquisa>5</qt_anos_pesquisa>
 	<pessoaFisica>
		<pessoa:nm_pessoa>Daniela Barbosa</pessoa:nm_pessoa>
		<pessoa:cd_cpf>017.638.738-20</pessoa:cd_cpf>
		<pessoa:cd_rg xsi:nil="true"></pessoa:cd_rg>
		<pessoa:nm_mae xsi:nil="true"></pessoa:nm_mae>
		<pessoa:nm_pai xsi:nil="true"></pessoa:nm_pai>
		<pessoa:tp_estado_civil xsi:nil="true"></pessoa:tp_estado_civil>
		<pessoa:nm_conjuge xsi:nil="true"></pessoa:nm_conjuge>
		<pessoa:dt_nascimento xsi:nil="true"></pessoa:dt_nascimento>
	</pessoaFisica>
 	<resultado>
 		<tp_resultado_consulta>NAO_CONSTA</tp_resultado_consulta>
 	</resultado>
 </consulta>
<consulta>
	<cd_item>3</cd_item>
	<qt_anos_pesquisa>5</qt_anos_pesquisa>
 	<pessoaJuridica>
		<pessoa:nm_pessoa>SERASA</pessoa:nm_pessoa>
		<pessoa:cd_cnpj>06.928.201/0001-30</pessoa:cd_cnpj>
	</pessoaJuridica>
 	<resultado>
 		<tp_resultado_consulta>CONSTA</tp_resultado_consulta>
 		<ocorrencia>
 			<tp_livro>LV2</tp_livro>
 			<cd_numero_registro>555</cd_numero_registro>
 			<tp_onus>SIM</tp_onus>
 		</ocorrencia>
 	</resultado>
</consulta>
.
.
.

dentro da tag “CONSULTA” eu tenho varios elementos: cd_item, qt_anos_pesquisa, pessoaFisica ou pessoaJuridica e resultado, dentro da tag resultado eu tenho 1 ou varias Ocorrencias eu preciso recuperar essas OCORRENCIAS e jogar em uma tabela para cada PessoaFisica ou Juridica (recuper o codigo na tag cdItem)
qual seria a melhor opcao para fazer isso? utilizar XStream, JaxP, jaxB, SAX, DOM

e outra coisa eu tenho alguns SCHEMAS para validar esse XML, teria algum metodo q eu passe O xml e os SCHEMAS e ele faz essa validacao pra mim?

obrigado

Olá

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPDOM8.html

http://www.onjava.com/pub/a/onjava/2004/09/15/schema-validation.html

Nada que o bom e velho google não resolva. :lol:

[]s
Luca