Dúvida em webservice

Bom dia,

pessoal espero que consigam me ajudar, tenho um web service funcionando perfeito, porém o xml que ele
retorna nem todos ítens são obrigatórios, caso um atributo da consulta que é feita no banco esteja ‘null’, ele retorna o xml com a tag
“diferente” digamos assim.

Um exemplo do xml que ele retorna é:

<usuario> <nome>regis</nome> <login>resb</login> </usuario>

Digamos que o login não fosse obrigatório e esse usuário tivesse um login vazio o xml que retorna é:

<usuario> <nome>regis</nome> <login xsi:nil="1"/> </usuario>

Caso fosse vazio não teria como ao inves de

<login xsi:nil="1"/>

Retornasse:

<login></login>

Existe alguma configuração algo que possa ser colocado no WSDL que altere esse retorno?

Valeu espero que alguém possa ajudar…

Tu tem o código de geração do xml? Dá pra alterar direto no código ao invés de mecher no WDSL (nem sei o que é isso).

flw!

Então amigo. Há sim maneiras de que se retorne um XML somente com os campos que lhe interessar. Mas como você gerou esse XML ?
Aqui, eu uso o XSTREAM, com ele faço da seguinte maneira:

Annotations.configureAliases(xstream, NomeDaClasse.class);

Aqui, eu informo ao xstream onde estão os campos que ele vai usar para gerar o meu XML.

xstream.useAttributeFor(NomeDaClasse.class, "NomeDoCampo");

Aqui eu escolho qual é o atributo que vou usar, quero usar como um atributo, um campo espefíco da classe.

xstream.omitField(NomeDaClasse.class,"NomeDoCampo");

Aqui, eu escolho qual campo da minha classe vai ser omitido. Daí, o XML aparece sem ele.

[code]@XStreamAlias(“reg”)
public class NomeDaSuaClasse implements Serializable {

@XStreamAsAttribute@XStreamAlias("nomeDoSeuCampo")
private Integer nomeDoSeuCampo; 

@XStreamAsAttribute@XStreamAlias("nomeDoSeuCampo2")
private Integer nomeDoSeuCampo2; 
    
   @XStreamOmitField
private Integer nomeDoCampo3; 

   /* Seus Métodos Aqui */

}[/code]

Dessa Maneira a minha classe fica preparada pra ser lida pelo XSTREAM e me gerar o xml. Perceba que meu ultimo atributo será omitido quando o xml for gerado, mas isso não é uma boa prática, já que dessa forma, quando outra pessoa usar esse atributo, e precisar do campo, ele será omitido.

É claro que há mais maneiras de se fazer. Só estou mostrando como eu faço aqui.

Qualquer coisa, estamos ai… Abraço :smiley:

Aqui gerei o webservice utilizando a ferramenta da apache, utilizei o AXIS, não escrevo diretamente o xml e nem
sempre esses campos serão omitidos pois se estiverem preenchidos vai aparecer.

Digamos que tenho um método que retorna um Object[].

Vou olhar as classes que o AXIS cria para ver se tem algo que eu possa tratar, alguém tem mais
alguma dica?

Desde ja obrigado pro pessoal ai de cima hehehe…