Dodawanie ładnych namespace prefixów w JAXB-ie
JAXB domyślnie tworzy mniej więcej takie prefixy dla przestrzeni nazw ns1, ns2 . . .
Generalnie nie jest to takie złe, ale czasem człowiek chce mieć czytelniejszego XMLa.
Żeby zasugerować sunowskiej implementacji JAXBa użycie innych prefixów, należy użyć klasy: com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper
, która zawiera jedną abstrakcyjną metodę:
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requiredPredix)
Gdzie namespaceUri
to URI przestrzeni nazw do której mamy zwrócić prefix. Pusty string oznacza domyślną przestrzeń nazw. Więcej na temat tej klasy w javadocach.
Instancje tej klasy należy podać Marshaller’owi jako wartość klucza o nazwie: com.sun.xml.internal.bind.namespacePrefixMapper
Uwaga:
- Nie ma gwarancji że JAXB posłucha sugestii.
- Ta metoda działa tylko dla referencyjnej implementacji JAXB’a