Jaxb2Marshaller.unmarshal

0 respostas
Fox_McCloud

Eu tenho um esquema xsd, e foi utilizado Jaxb2 para gerar as classes do esquema...
Tenho também um form.xml preenchido com dados de acordo com o esquema xsd...

Como utilizo o Jaxb2Marshaller para fazer o unmarshall do meu xml e popular novas instâncias das classes do esquema?

Agradeço orientações a respeito, ou uma referência que ensine exatamente como fazer... não deve ser muito mais complicado do que a minha tentativa de implementação (eu espero)...

Tentei o abaixo, mas está dando NullPointerException... o array de bytes não é nulo, o conteúdo é válido (eu gravei em um arquivo em disco usando FileOutputStream e o arquivo foi restaurado corretamente), o marshaller também não fica nulo... o erro ocorre na linha comentada.
private Object unmarshallJaxb2XML(byte[] xmlBytes) throws Exception {
		Source xmlSource = XMLUtils.getXmlSource(xmlBytes); // OK
		
		Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); // OK (não retorna nulo)
		Object objectGraph = marshaller.unmarshal(xmlSource); // ERRO: java.lang.NullPointerException
		return objectGraph;
	}

	private Source getXmlSource(byte[] xmlBytes) {
		ByteArrayInputStream bytesIn = new ByteArrayInputStream(xmlBytes);
		StreamSource streamSource = new StreamSource(bytesIn);
		return streamSource;
	}
Obrigado! :wink:
Criado 5 de fevereiro de 2010
Respostas 0
Participantes 1