3
respostas

Como seria a Leitura do XML Com varias Tags <Compra> ?

Utilizando o código do curso. Gostaria de saber como ficaria o código de leitura e escrita do xml para o modelo abaixo : *Detalhe: no curso e somente uma compra. No exemplo abaixo serão varias compras"

<compra>
  <id>15</id>
    <produto codigo="1587">
      <nome>geladeira</nome>
    </produto>
    <produto codigo="1588">
      <nome>ferro de passar</nome>
    </produto>
</compra>

<compra>
  <id>16</id>
    <produto codigo="1777">
      <nome>super nes</nome>
    </produto>
    <produto codigo="1888">
      <nome>fogao</nome>
    </produto>
</compra>

<compra>
  <id>17</id>
    <produto codigo="1778">
      <nome>coxa de cama</nome>
    </produto>
    <produto codigo="1889">
      <nome>TV Led</nome>
    </produto>
</compra>
3 respostas

Você precisaria de um tag pai, por exemplo <compras>e de uma classe representando essas compras. Da para fazer uma jogada usando List direto também.

Podes me mostrar como seria essa "jogada"?

public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {

        ArrayList<Compra> compras = (ArrayList<Compra>) source;

        for (Compra compra : compras) {
            context.convertAnother(compra);
        }

    }
}

public void serializacaoXStream() {

        XStream xstream = new XStream();
        xstream.registerConverter(new ConverteVariasCompras());
        xstream.alias("compra", Compra.class);
        xstream.aliasField("produto", Compra.class, "produtos");

        ArrayList<Compra> compras = new ArrayList<Compra>();
        compras.add(new Compra(123, new ArrayList<Produto>()));
        compras.add(new Compra(321, new ArrayList<Produto>()));
        compras.add(new Compra(213, new ArrayList<Produto>()));

        System.out.println(xstream.toXML(compras));


    }

O XStream já inicia uma tag logo no começo do procedimento, então não tem como deixar as compras soltas,elas precisam estar dentro de uma tag, talvez seja possível fazendo tudo na mão.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software