Store a List attribute in an XML of an object with JABX

0

I'm using JABX to serialize (or "marshalize") objects into xml files. However, the JABX does not store the List attribute contents of the serialized objects. Only the name of the List appears in the XML, but not its contents.

Look at the object I'm storing:

package br.Geral;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="Aluno")
public class Aluno {



    private int IdAluno;
    private String nome;
    private String cpf;
    private String telefone;
    private String endereco;
    private String nomeArquivo;

    private String dataNascimento;


    private List<Matricula> matriculas;  

    private List<StringBuilder> listaArquivosCert = new ArrayList<StringBuilder>();


    public Aluno(String nome, String cpf, String telefone, String endereco, String dataNascimento) {
        this.nome =nome;
        this.cpf =cpf;
        this.telefone = telefone;
        this.endereco = endereco;
        this.dataNascimento= dataNascimento;

        this.nomeArquivo = nome.replaceAll(" ", "");

    }

    public String getNomeArquivo() {
        return nomeArquivo;
    }

    public void setNomeArquivo(String nomeArquivo) {
        this.nomeArquivo = nomeArquivo;
    }

    public Aluno() {
    }





    @XmlElement
    public List<StringBuilder> getlistaArquivosCert(){
        return listaArquivosCert;
    }

    public void addCertificacao(StringBuilder arquivoCertificacao) {
        listaArquivosCert.add(arquivoCertificacao);
    }





    public void matricularSe(Matricula mat) {
        matriculas.add(mat);
    }



    //GETTERS E SETTERS

    @XmlElement
    public int getIdAluno() {
        return IdAluno;
    }


    public void setIdAluno(int idAluno) {
        IdAluno = idAluno;
    }


    @XmlElement
    public String getNome() {
        return nome;
    }


    public void setNome(String nome) {
        this.nome = nome;
    }


    @XmlElement
    public String getCpf() {
        return cpf;
    }


    public void setCpf(String cpf) {
        this.cpf = cpf;
    }


    @XmlElement
    public String getTelefone() {
        return telefone;
    }


    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }


    @XmlElement
    public String getEndereco() {
        return endereco;
    }


    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }


    @XmlElement
    public String getDataNascimento() {
        return dataNascimento;
    }


    public void setDataNascimento(String dataNascimento) {
        this.dataNascimento = dataNascimento;
    }


    @XmlElement
    public List<Matricula> getMatriculas() {
        return matriculas;
    }


    public void setMatriculas(List<Matricula> matriculas) {
        this.matriculas = matriculas;
    }

My Marshal class:

package br.JAXB;

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import br.Geral.Aluno;

//MARSHALIZER / DEMARSHALIZER
public class AlunoJAXB {


    //USAMOS ESTE MÉTODO PARA CONVERTER UM OBJETO EM UM ARQUIVO XML
    public void marshall(Aluno aluno) {

        try {

            File fileXmlAluno = new File("src\br\Banco_de_Dados\Alunos"+aluno.getNomeArquivo()+".xml");
            if (!fileXmlAluno.exists()) {
                fileXmlAluno.createNewFile();
            }

            JAXBContext jContext = JAXBContext.newInstance(aluno.getClass());
            Marshaller ms = jContext.createMarshaller();
            ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            //ms.marshal(aluno, System.out);
            ms.marshal(aluno, fileXmlAluno);

            System.out.printf("\n\n");
        } catch (Exception e) {
            System.out.println("" +e.getMessage());
            e.printStackTrace();
        }

    }


    public Aluno unMarshall(String nomeArquivo) {

        Aluno novoAluno=null;
        try {

            JAXBContext jContext = JAXBContext.newInstance(Aluno.class);

            //SOMENTE PARA IMPRIMIR O XML NA TELA::
            Marshaller ms = jContext.createMarshaller();   
            ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            Unmarshaller ums = jContext.createUnmarshaller();

            novoAluno = (Aluno)ums.unmarshal(new File("src\br\Banco_de_Dados\Alunos"+nomeArquivo+".xml"));

            System.out.println();
            System.out.println("Nome do aluno recuperado do banco de dados: "+novoAluno.getNome());
            System.out.printf("\n\n");
            System.out.println("Registro completo dele: ");
            System.out.println();
            ms.marshal(novoAluno, System.out);     //IMPRIME O XML DA ENTIDADE NA TELA


        } catch (Exception e) {
            System.out.println("" +e.getMessage());
            e.printStackTrace();
        }

        return novoAluno;
    }

}

My Main class:

package br.MainTestes;


import br.Geral.Aluno;
import br.Geral.Certificacao;
import br.Geral.Curso;
import br.Geral.Turma;
import br.JAXB.AlunoJAXB;
public class MainTestes {

    /**
     * PARA PESQUISAR UMA ENTIDADE NO BANCO XML, INFORME O NOME DELA SEM ESPAÇOS NOS MÉTODOS "UNMARSHAL"
     */

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String nome = "Alice Schneider Kuhn";
        String cpf = "000.000.222-11";
        String telefone = "998833221";
        String endereco = "Rua Finlandia, 1000, Petropolis, Novo Hamburgo";
        String dataNascimento = "09/12/1994";

        Aluno alice = new Aluno(nome, cpf, telefone, endereco, dataNascimento);

        AlunoJAXB daoAluno = new AlunoJAXB();

        Curso curso1 = new Curso("Ingles", "Ingles Americano");
        Turma turma1 = new Turma(2, 20, "Turma ingles 20 alunos", curso1);
        Certificacao cert1 = new Certificacao(alice, turma1, 2018);  //certificacao da alice

    System.out.println(alice.getlistaArquivosCert().toString());

        daoAluno.marshall(alice);
        //daoAluno.unMarshall("AliceSchneiderKuhn");



        System.exit(0);
    }
}

The XML FILE GENERATED AS A RESULT IS THIS: THE LIST ATTRIBUTE COMES EMPTY:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Aluno>
    <cpf>000.000.222-11</cpf>
    <dataNascimento>09/12/1994</dataNascimento>
    <endereco>Rua Finlandia, 1000, Petropolis, Novo Hamburgo</endereco>
    <idAluno>0</idAluno>
    <nome>Alice Schneider Kuhn</nome>
    <nomeArquivo>AliceSchneiderKuhn</nomeArquivo>
    <telefone>998833221</telefone>
    <listaArquivosCert/>
</Aluno>

WHY DOES JABX NOT SUPPORT LISTS? OR I'M DOING WRONG?

    
asked by anonymous 08.04.2018 / 20:37

0 answers