Utilize o tempo de execução JAXB (Java™ Architecture for XML Binding)
para manipular os documentos de instância XML.
Antes de Iniciar
Utilize JAXB para gerar classes Java
a partir de um esquema XML com o comando do compilador de esquema,
xjc, ou para gerar um esquema XML a partir de uma
classe Java com o comando do gerador de esquema,
schemagen.
Sobre Esta Tarefa
Utilize as APIs JAXB e as ferramentas para estabelecer mapeamentos
entre classes
Java
e o esquema XML. Após a existência de ligações de dados,
utilize a API de tempo de execução de ligação JAXB
para converter os documentos de instância XML para e a partir dos objetos Java. Os dados armazenados em um documento XML podem ser acessados sem a
necessidade de entender a estrutura de dados. Os artefatos e as classes anotadas JAXB contêm todas as informações que a API de
tempo de execução JAXB precisa para processar documentos de instância XML.
A API de tempo de execução JAXB permite executar marshal de objetos JAXB para
XML e executar unmarshal do documento XML de volta para as instâncias
da classe JAXB.
Procedimento
- Execute marshal de objetos JAXB para documentos da instância
XML.
Utilize a API de tempo de execução JAXB para executar
marshal ou converter as instâncias do objeto JAXB em um documento da instância
XML.
- Instancie suas classes JAXB.
- Chame o marshaller JAXB.
Este exemplo demonstra como instanciar os objetos JAXB gerados em um
aplicativo e utilizar a classe JAXBContext e as APIs do marshaller de tempo de
execução JAXB para executar marshal dos objetos JAXB nas instâncias XML.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Criar marshaller
Marshaller m = jc.createMarshaller();
//Executar marshal do objeto no arquivo.
m.marshal(myJAXBObject, myOutputStream);
A Implementação de
Referência JAXB introduz propriedades adicionais do marshaller específicas do
fornecedor, como o mapeamento do prefixo de espaço de nomes, recuo e controle
de escape do caractere que não são definidos pela especificação JAXB.
Utilize
essas propriedades para especificar controles adicionais do processo de
marshal. Essas propriedades operam com a Implementação de Referência
JAXB apenas e podem não operar com outros provedores JAXB. Informações adicionais referentes a propriedades específicas do fornecedor
estão localizadas na especificação das Propriedades de Tempo de Execução de
Extensões do Fornecedor JAXB (Java Architecture for XML Binding) RI.
- Execute unmarshal dos arquivos XML para objetos JAXB.
Utilize
a API de tempo de execução JAXB para executar unmarshal ou converter um
documento de instância XML para instâncias do objeto JAXB.
- Obtenha um documento de instância XML existente.
- Chame o unmarshaller JAXB.
Este exemplo demonstra um programa que lê um documento XML e executa
unmarshal ou converte o documento XML em instâncias do objeto JAXB.
Utilize a
classe JAXBContext e as APIs de Unmarshaller de tempo de execução
JAXB para executar unmarshal do documento XML.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
//Crie o unmarshaller
Unmarshaller um = jc.createUnmarshaller();
//Execute unmarshal no conteúdo XML do arquivo myDoc.xml na instância
do objeto Java.
MyJAXBObject myJAXBObject = (MyJAXBObject)
um.unmarshal(new java.io.FileInputStream( "myDoc.xml" ));
Resultados
Agora você pode executar marshal de classes JAXB Java
e unmarshal de dados XML que utilizam a estrutura de ligação JAXB. Consulte a documentação de Implementação de referência JAXB para obter informações adicionais sobre as APIS de tempo de execução de serialização e desserialização.
Evitar Problemas: Se Java 2 Security estiver ativado, agrupe as chamadas de método
JAXBContext.newInstance(), Unmarshaller.unmarshal() e Marshaller.marshal() em um
método AccessController.doPrivileged para evitar uma exceção de segurança.
gotcha
.