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
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
[quote=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
[/quote]
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.