XStream - como gerar xml sem "outer-class reference"

1 resposta
P

Galera estou tentando utilizar o XStream para gerar xml, e não estou conseguindo elimiar a linha que retorna "outer-class reference", segue o código:

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class Pessoa {

  private String nome;
  private String sobrenome;
  private Fone telefone;
  private Fone celular;

  public Pessoa(String nome, String sobrenome) {
    this.nome = nome;
    this.sobrenome = sobrenome;
  }

  public String getNome() {
    return nome;
  }

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

  public String getSobrenome() {
    return sobrenome;
  }

  public void setSobrenome(String sobrenome) {
    this.sobrenome = sobrenome;
  }

  public Fone getTelefone() {
    return telefone;
  }

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

  public Fone getCelular() {
    return celular;
  }

  public void setCelular(Fone celular) {
    this.celular = celular;
  }

  public class Fone{
    private int codigo;
    private String numero;

    public Fone(int codigo, String numero){
      this.codigo = codigo;
      this.numero = numero;
    }

    public int getCodigo() {
      return codigo;
    }

    public void setCodigo(int codigo) {
      this.codigo = codigo;
    }

    public String getNumero() {
      return numero;
    }

    public void setNumero(String numero) {
      this.numero = numero;
    }
  }

  public static void main(String[] args){
    Pessoa pessoa = new Pessoa("Paulo", "Pedroso");
    pessoa.setTelefone(pessoa.new Fone(54, "1234-5678"));
    pessoa.setCelular(pessoa.new Fone(54, "9999-9999"));

    XStream xStream = new XStream(new DomDriver());
    xStream.alias("pessoa", Pessoa.class);
    xStream.alias("fone", Fone.class);

    System.out.println(xStream.toXML(pessoa));
  }
}

O que me retorna o sguinte:

<pessoa>
  <nome>Paulo</nome>
  <sobrenome>Pedroso</sobrenome>
  <telefone>
    <codigo>54</codigo>
    <numero>1234-5678</numero>
    <outer-class reference="../.."/> //Aqui a linha que preciso elimiar
  </telefone>
  <celular>
    <codigo>54</codigo>
    <numero>9999-9999</numero>
    <outer-class reference="../.."/> //Aqui a linha que preciso elimiar
  </celular>
</pessoa>

1 Resposta

P

Galera encontrei uma solução, caso alguem tenha uma melhor pode postar aqui.
O que eu tive que fazer foi criar um classe java para Pessoa e outra para o Fone, com isso nem mesmo a linha seguinte foi necessaria.

Criado 22 de maio de 2009
Ultima resposta 22 de mai. de 2009
Respostas 1
Participantes 1