JAXB Marshaller

2 respostas
willroberto

Alguem sabe como mudar o NameSpace de ns1 para outro qualquer?? no meu schema ja esta definido “C”, quando eu fasso um Unmarshaller ele encontra as tas com “C”, mas quando fasso um Marshaller ele não vai como"C" vai como ns1 no namespace, como fasso pra alterar???

vlwssss

2 Respostas

cristiano.andrade

Você vai ter que fazer uma classe que extende a NameSpacePrefixMapper

exemplo:

public class NameSpacePrefixMapperImpl extends NamespacePrefixMapper {

    @Override
    public String getPreferredPrefix(String namespaceURI, String sugestion, boolean requiredPrefix) {

        if (namespaceURI.equals("http://meunamespace")) {
            return "C";
        }
        
        return sugestion;
    }

e no marshaller vc coloca assim:

Marshaller m = ctx.createMarshaller();
...
...
m.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NameSpacePrefixMapperImpl())
...
...

[]s

mmilanez

cristiano.andrade:
Você vai ter que fazer uma classe que extende a NameSpacePrefixMapper

exemplo:

public class NameSpacePrefixMapperImpl extends NamespacePrefixMapper {

    @Override
    public String getPreferredPrefix(String namespaceURI, String sugestion, boolean requiredPrefix) {

        if (namespaceURI.equals("http://meunamespace")) {
            return "C";
        }
        
        return sugestion;
    }

e no marshaller vc coloca assim:

Marshaller m = ctx.createMarshaller();
...
...
m.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NameSpacePrefixMapperImpl())
...
...

[]s

Aqui tem um jeito mais fácil de se fazer http://www.func.nl/community/knowledgebase/customize-namespace-prefix-when-marshalling-jaxb . O único problema é que ele remove o namespace e adiciona um em branco… Após esta etapa, um replace deste namespace para o adequado precisa ser feito.

Criado 17 de outubro de 2006
Ultima resposta 26 de jan. de 2010
Respostas 2
Participantes 3