xStream - Como tratar NAMESPACEs na deserialização de um arquivo XML?

4 respostas
F

Olá,

Passei o dia pesquisando sobre como tratar os namespaces na conversão de um arquivo XML para Java utilizando a api xStream, porém não encontrei muita coisa util a respeito.

Possuo alguns SCHEMAS xsd, que ditam o padrão para a criação de saidas em XML.
A partir desses SCHEMAS, utilizei o JAXB e foi criada toda a estrutura java (todas as classes referenciadas aos tipos de dado contidos nos SCHEMAS).

Com isso em mãos, o que preciso fazer é: Carregar um arquivo XML (que já segue a estrutura proposta pelos SCHEMAS em questão) e popular toda essa estrutura java para ser usada internamente no meu programa.

Fiz alguns testes com o xStream e percebi que é muito facil de utilizá-lo, porém nesse meu caso eu preciso tratar os namespaces contidos nesse arquivo XML que será lido.

A exceção que me ocorre é:

Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: ans:tipoTransacao

para o seguinte trecho do XML:

<ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao>

O xStream não consegue tratar o namespace “ANS”, e com isso não consigo à partir desse arquivo XML, popular minha estrutura java.

Alguem sabe alguma tática pra isso com a utilização do xStream?

4 Respostas

D

felipe.sartor:
Olá,

Passei o dia pesquisando sobre como tratar os namespaces na conversão de um arquivo XML para Java utilizando a api xStream, porém não encontrei muita coisa util a respeito.

Possuo alguns SCHEMAS xsd, que ditam o padrão para a criação de saidas em XML.
A partir desses SCHEMAS, utilizei o JAXB e foi criada toda a estrutura java (todas as classes referenciadas aos tipos de dado contidos nos SCHEMAS).

Com isso em mãos, o que preciso fazer é: Carregar um arquivo XML (que já segue a estrutura proposta pelos SCHEMAS em questão) e popular toda essa estrutura java para ser usada internamente no meu programa.

Fiz alguns testes com o xStream e percebi que é muito facil de utilizá-lo, porém nesse meu caso eu preciso tratar os namespaces contidos nesse arquivo XML que será lido.

A exceção que me ocorre é:

Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: ans:tipoTransacao

para o seguinte trecho do XML:

<ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao>

O xStream não consegue tratar o namespace “ANS”, e com isso não consigo à partir desse arquivo XML, popular minha estrutura java.

Alguem sabe alguma tática pra isso com a utilização do xStream?

Trabalhei em um projeto realizando o parser das Guias ANS, creio que devido a complexidade xstream não é recomendado, use: JAXB!!!

Kenobi

Só fazer o setup do Qname

QNameMap qnameMap = new QNameMap();

QName qname = new QName(“<a href="http://kenobi.com">http://kenobi.com</a>”, “alias”, “knb”);

qnameMap.registerMapping(qname, X.class);

XStream xstream = new XStream(new StaxDriver(qnameMap));

Mas aconselho fortemente à utilizar um OXM como Jaxb2 ou XmlBeans. O primeiro para mensagens muito grandes e o segundo para mensagens curtas, devido à performance. Infelizmente o XmlBeans para arquivos com muitos nós acaba sendo impeditivo.

F

Obrigado Kenobi, na segunda assim que voltar ao expediente eu vou testar!
Ah! e dders, o problema em questão é exatamente à respeito do TISS da ANS. Na verdade temos um sistema pronto há mais de um ano e meio, mas estamos querendo refazê-lo para facilitar nas manutenções de código, já que a ANS não vai parar de soltar atualizações tão cedo… =D

D

felipe.sartor:
Obrigado Kenobi, na segunda assim que voltar ao expediente eu vou testar!
Ah! e dders, o problema em questão é exatamente à respeito do TISS da ANS. Na verdade temos um sistema pronto há mais de um ano e meio, mas estamos querendo refazê-lo para facilitar nas manutenções de código, já que a ANS não vai parar de soltar atualizações tão cedo… =D

Nossa cara, altos pesadelos… O pior que os caras prorrogam as normativas adoidado, o modelo em si ainda necessita de diversos ajustes, na época que estava no projeto, imagina o parto… Pelo visto ainda não perderam a mania!!! Há, tinha até apelido: SOM(Sistema orientado a mutações) he he he!!

A respeito do JAXB, consegui na gerar os stubs na boa, na manibulação dos arquivos, tanto a serialização como deserialização foram tranquilas…

Criado 14 de novembro de 2008
Ultima resposta 14 de nov. de 2008
Respostas 4
Participantes 3