Problema com o Unmarshal do JAXB  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

Oi pessoal.

Tenho um problema em relação aos métodos unmarshal que retornam JAXBElement<T> da interface javax.xml.bind.Unmarshaller.

O problema é que o JAXBElement retornado traz apenas os atributos da minha tag XML, mas não trás os elementos. Debugando isso, eu vi que o QName dele (atributo name) está errado e o scope está em GlobalScope, porém tais campos são protected final e a instância do JAXBElement é criada pela implementação do Unmarshaller em algum lugar das profundezas do JAXB. Não achei nenhum método no Unmarshaller para definir o name e/ou o scope.

Alguém aí já pegou um problema parecido?

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

Ok, consegui resolver.


Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
giovanni_stiwes
JavaGuru

Membro desde: 20/04/2006 09:00:42
Mensagens: 236
Offline

Estou com o mesmo erro, mas mesmo setando setNamespaceAware continua. Teria como passar seu código para unmarshal.
[MSN]
felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

Infelizmente,

Tenho que ressuscitar esse tópico...não consigo fazer com que o Unmarshall funcione corretamente.
O erro: não há elementos na classe de resultado.

método


JAXB (generated by approach WSDL2Java)


no teste:

nunca retorna os elementos filhos!

Obs: XML que está sendo consumido (exatamente dessa maneira).


Alguém pode me ajudar?

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

alguém? o criador do tópico?

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

felipeguerra wrote:alguém? o criador do tópico?


Você poderia postar o código do JustificativaTextualType, também?

[]´s

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

asaudate wrote:
felipeguerra wrote:alguém? o criador do tópico?


Você poderia postar o código do JustificativaTextualType, também?

[]´s


Valeu!

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

Troque:




Por




Aqui funcionou.

Mas, que mal lhe pergunte, como você arranjou esse XML ? Ele tem um schema?

[]´s!

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

Fiz a modificação que mencionou e ainda não funcionou...

Sobre o XML, existe um WS que devolve esse XML, porém, não há um XSD.
Eu fiz um XSD para ele pois os campos são sempre os mesmos...

Um abraço.

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

felipeguerra wrote:Fiz a modificação que mencionou e ainda não funcionou...

Sobre o XML, existe um WS que devolve esse XML, porém, não há um XSD.
Eu fiz um XSD para ele pois os campos são sempre os mesmos...

Um abraço.


Não funcionou, mas continuou com o mesmo problema? Ou mudou algo?

Eu também mudei a linha



para



mas isso não deveria fazer diferença. De qualquer maneira, teste para ver se é isso.

[]´s

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

asaudate wrote:
Não funcionou, mas continuou com o mesmo problema? Ou mudou algo?

Eu quis dizer que continua vindo NULL nos elementos filhos :

asaudate wrote:
Eu também mudei a linha



para



mas isso não deveria fazer diferença. De qualquer maneira, teste para ver se é isso.

[]´s

Infelizmente, não fez diferença mesmo.

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

Observe que a idéia era mudar o nome da propriedade, mesmo, não do getter. Foi isso que você fez?

[]´s

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

asaudate wrote:Observe que a idéia era mudar o nome da propriedade, mesmo, não do getter. Foi isso que você fez?

[]´s

Desculpe, quem mudou foi o FMK ao gerar a classe novamente...mas eu não entendi, qual é a relação do nome da propriedade e o respectivo 'get' como problema?

Abraço!

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

felipeguerra wrote:
asaudate wrote:Observe que a idéia era mudar o nome da propriedade, mesmo, não do getter. Foi isso que você fez?

[]´s

Desculpe, quem mudou foi o FMK ao gerar a classe novamente...mas eu não entendi, qual é a relação do nome da propriedade e o respectivo 'get' como problema?

Abraço!


A classe está configurada para ter acesso direto para a propriedade. Ou seja, é o nome da propriedade que deve ser alterado. O nome do getter não faz diferença.

[]´s

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

André Fonseca
JWizard
[Avatar]

Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline

victorwss wrote:Oi pessoal.

Tenho um problema em relação aos métodos unmarshal que retornam JAXBElement<T> da interface javax.xml.bind.Unmarshaller.

O problema é que o JAXBElement retornado traz apenas os atributos da minha tag XML, mas não trás os elementos. Debugando isso, eu vi que o QName dele (atributo name) está errado e o scope está em GlobalScope, porém tais campos são protected final e a instância do JAXBElement é criada pela implementação do Unmarshaller em algum lugar das profundezas do JAXB. Não achei nenhum método no Unmarshaller para definir o name e/ou o scope.

Alguém aí já pegou um problema parecido?


Vitor,

No JAXB para que ele não crie os objetos todos como inner classes quando é feito o unmarshall do xml é necessário usar escopo global, usando escopos globais é necessário usar JAXBElement

Uma outra alternativa para resolver este seu problema (trabalhar com JAXBElement definindo o QNAME) é você usar algo parecido com o código abaixo



onde http://example.org é o seu namespace e n1 é o prefixo

Você é novo no GUJ?


Como fazer perguntas?



www.twitter.com/_afonseca
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team