2
respostas

Duvida/Problema com attributeFor

Olá pessoal! Como eu faço para pegar o valor '1979' que está na tag <materiais codigo="1979">?

Segue abaixo meus tests:

package br.com.alura;

import com.thoughtworks.xstream.XStream;

public class TesteLeituraXml {

    public static void main(String[] args) {

        String xmlTeste = "<testeCompra>\n"+
                          " <id>100</id>\n"+
                          "  <materiais codigo=\"1979\">\n"+
                          "   <material>piscina</material>"+
                          "   <preco>15000.00</preco>"+
                          "</materiais>\n"+
                          "</testeCompra>";

        XStream xStream = new XStream();
        xStream.alias("testeCompra", Compra.class);
        xStream.alias("id", Compra.class);
        xStream.alias("materiais", Compra.class);
        xStream.useAttributeFor(Compra.class, "codigo");
        xStream.alias("material", Compra.class);
        xStream.alias("preco", Compra.class);
        Compra compraTeste = (Compra) xStream.fromXML(xmlTeste);
        System.out.println(compraTeste.getId());
        System.out.println(compraTeste.getMateriais());
        System.out.println(compraTeste.getCodigo());
        System.out.println(compraTeste.getMaterial());
        System.out.println(compraTeste.getPreco());

    }



}
package br.com.alura;

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

public class Compra {

    private int id;
    private int codigo;
    private String material;
    private String materiais;
    private double preco;
    private List<Produto> produtos = new ArrayList<Produto>();

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public List<Produto> getProdutos() {
        return produtos;
    }
    public void setProdutos(List<Produto> produtos) {
        this.produtos = produtos;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        result = prime * result + ((produtos == null) ? 0 : produtos.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Compra other = (Compra) obj;
        if (id != other.id)
            return false;
        if (produtos == null) {
            if (other.produtos != null)
                return false;
        } else if (!produtos.equals(other.produtos))
            return false;
        return true;
    }
    public int getCodigo() {
        return codigo;
    }
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }
    public String getMaterial() {
        return material;
    }
    public void setMaterial(String material) {
        this.material = material;
    }
    public double getPreco() {
        return preco;
    }
    public void setPreco(double preco) {
        this.preco = preco;
    }
    public String getMateriais() {
        return materiais;
    }
    public void setMateriais(String materiais) {
        this.materiais = materiais;
    }    
}
2 respostas

Boa tarde, John! Como vai?

Qual resultado vc está obtendo na saída do seu programa?

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Olá Gabriel!

O resultado é este:

100


0
null
0.0