import javax.xml.bind.*; import a.JustAType; import com.sun.xml.bind.marshaller.NamespacePrefixMapper; public class JAXBSample { public static void main(String args[]) throws javax.xml.bind.JAXBException{ try { JAXBContext jc = JAXBContext.newInstance("a"); a.ObjectFactory aObj = new a.ObjectFactory(); JustAType t = aObj.createJustAType(); t.setFoo(true); JAXBElement e = aObj.createJustAnElement(t); marshal(jc, e, null); NamespacePrefixMapper m = new PreferredMapper(); marshal(jc, e, m); m = new DeclareOnTopMapper(); marshal(jc, e, m); m = new PreDeclaredMapper(); marshal(jc, e, m); } catch(javax.xml.bind.JAXBException e) { e.printStackTrace(); } } public static void marshal(JAXBContext jc, Object toMarshall, NamespacePrefixMapper mapper) { System.out.println("Mapper: " + ((mapper == null) ? " not set. " : (mapper.getClass().getSimpleName()))); try { Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); if (mapper != null) { m.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper); } m.marshal(toMarshall, System.out); System.out.println("-----------------------"); } catch(Exception e) { e.printStackTrace(); } } public static class PreferredMapper extends NamespacePrefixMapper { @Override public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) { return "mappedNamespace" + namespaceUri; } } public static class DeclareOnTopMapper extends PreferredMapper { @Override public String[] getPreDeclaredNamespaceUris() { return new String[] {"a", "b"}; } } public static class PreDeclaredMapper extends PreferredMapper { @Override public String[] getContextualNamespaceDecls() { return new String[] {"a", "mappedNamespacea"}; } } }