XML com o XStream

Opa pessoal…

Saca só, fix um programinha com esse cara, e ele me retorna uma XML assim:<foneComercial> <ddd>31</ddd> <numero>3899 1994</numero> </foneComercial>

Mas eu preciso de um XML assim:

<foneComercial ddd="31" numero="3899 1994" />

Será que rola?

VELO

Não Velo, não rola!


Infelizmente o xstream não trabalha com atributos de tags… apenas tags (elementos) …

Lucas

E existe um equivalente generico onde isso eh possível, certo?

Hummm … se existe eu nao sei, mas é fácil facil vc escrever um XSLT pra fazer isso, vale a pena a brincadeira.

pelamordedeus… nao use XSLT… construcao e manutenção complicadissimos, somado a performance tosquissima. Use Freemarker e seja mais feliz :D. Veja como no link http://freemarker.sourceforge.net/docs/xgui.html

Rafael

[quote=Rafael Steil]pelamordedeus… nao use XSLT… construcao e manutenção complicadissimos, somado a performance tosquissima. Use Freemarker e seja mais feliz :D. Veja como no link http://freemarker.sourceforge.net/docs/xgui.html
[/quote]

Eitcha.

Freemarker é legal mesmo, mas leia as entrelinhas antes de adotar:

Fora que eu não acho construção e manutenção complicadíssimos, um pouco trabalhoso e concordo com [quote=Freemarker Preface]Also its (XSLT) syntax is terribly verbose.[/quote]

Olá,

O Castor nao resolveria?
Tem que criar um segundo XML de mapeamento, mas ele faz isso que voce precisa.

]['s

Pessoal, mais um detalhe, eu preciso de conversão em mão unica…

Ou seja, o meu objeto vai virar XML. O XML não vai virar objeto.

E eu queria um negocio ± automatico, pra não precisar reescrever pra cada classe. Pra escreve sempre eu concateno Strings :smiley:

VELO

XMLVomiter: http://geocities.yahoo.com.br/renato3110/projects/xmlvomiter.html

Com ele você codifica como será o mapeamento, incluindo transformação em atributos. Não usa reflection por isso não é “automático” como o XStream.

Está na versão 0.0.0.0.0.0.0.0.0.0.3 :smiley: Mas se você estiver muito desesperado…

Olha o q resolvi…

O destino do meu XML só entende atributos primitivos e String. Então vou fazer uma classe em java q converte, usando reflection.

Valeu pela ajuda povo.

VELO

Humm… reflection… se o desempenho não é importante…

Ah, tipo, desempenho é sempre importante…

Mas como funciona, eu fiz uma consulta no banco (hibernate) e tenho o meu objeto em mãos.

Eu uso um framework q mostra tudo na tela usando XML, ele não acessa banco, e pra ele, dados = XML. E tem que ser parametro do XML, não pode ser como TAG.

Então, transformo o meu objeto em um “objeto de tela”, que tem apenas os atributos em tipo primitivo e String. Sem arrays, sem objetos “estranhos”, nada, só tipo primitivo e String.

Esse cara eu passo por dentro de uma classe q usa reflexão e monta o meu XML concatenando Strings, sei lá, bem simples, o que vocês acham?

VELO

Velo eu não entendi muito bem o que você faz, mas um exemplo com o vomiter seria mais ou menos assim (sem reflection):


// Não sei como é a sua classe...

class FoneComercial {
	public String ddd;
	public String numero;
}
XMLFormatter f = new XMLFormatter("foneComercial");
f.addAttribute("ddd", fone.ddd);
f.addAttribute("numero", fone.numero);
String xml = f.format();
<foneComercial ddd="31" numero="3899 1994"/>