XStream namespace

6 respostas
G

Olá,

Estou usando XStream para gerar o XML a partir de objetos Java.

O problema é que o XStream está gerando assim:

<?xml version="1.0" ?> 1 . . .

gostaria que fosse gerado assim:

<?xml version="1.0" encoding="UTF-8"?> 1 . . .

Alguem tem alguma idéia?

6 Respostas

G

Xstream não trabalha com namespaces, pelo menos não na última versão que eu usei, fazem alguns anos.

Mas nada te impede, no caso desse xml do nf-e de colocar o xmlns como atributo Java da classe enviNFe.

G

Blz, consegui.

Exatamente como você falou.
O Felipe Alves havia me dado a dica.

Codigo:

@XStreamAsAttribute
    protected String xmlns="http://www.portalfiscal.inf.br/nfe";

Obrigado a todos.

cleiton_herrmann
gilson_gp, qual versão do XStream vc esta usando, eu baxei a 1.3.1 mas não estou conseguindo fazer a annotation @XStreamAsAttribute funcionar, ela simplesmente não coloca os atributos do meu objeto como atributos da tag, estou ainda tentando fazer funcionar o exemplo do proprio site do xstream
@XStreamAlias(value="pessoa")
public class Pessoa {

    @XStreamAlias(value="nome")
    @XStreamAsAttribute
    private String nome;

    @XStreamAlias(value="email")
    @XStreamAsAttribute
    private String email;

    @XStreamAlias(value="foneComercial")
    @XStreamAsAttribute
    private Telefone foneComercial;

    //getters and setters
}
a saida é como se não tivesse a annotation @XStreamAsAttribute, alias, nem a annotation @XStreamAlias não esta funcionando como vc pode ver:

tem alguma ideia do q pode estar faltando ou estou fazendo errado

Obrigado t+

cleiton_herrmann

consegui fazer funcionar usando os métodos, mas as annotation não consegui fazer funcionar

XStream xstream = new XStream();

xstream.alias("pessoa", Pessoa.class);
xstream.useAttributeFor(Pessoa.class, "nome");
xstream.useAttributeFor(Pessoa.class, "email");
xstream.useAttributeFor(Pessoa.class, "foneComercial");
G

Se não me engano tem que chamar um método avisando o XStream para usar annotations. Não lembro de cabeça, mas é algo como xstream.useAnnotations, ou algo assim.

cleiton_herrmann

sim sim, tem mesmo eu tinha visto num forum gringo ontem, tem 2 metodos

xstream.processAnnotations(Classe.class); ou xstream.autodetectAnnotations(true);

vlw garcia-jj t+

Criado 29 de setembro de 2009
Ultima resposta 27 de jan. de 2011
Respostas 6
Participantes 3