Czy kiedykolwiek ktoś mógł usunąć nieużywane przestrzenie nazw podczas marszałka obiektu za pomocą JAXB? Oto łącze żądanej funkcji: https://java.net/jira/browse/JAXB-103 (patrz opis)Jak uniemożliwić JAXB zapisywanie nieużywanych przestrzeni nazw podczas zestawiania
Czy istnieje właściwość do skonfigurowania JAXB? Czy zostało to naprawione w MOXy?
W tej chwili przechodzę przez obiekt, który musi zostać zebrany i wyodrębnić wszystkie klasy, które muszą zostać przypisane do klasy [] classesToBeBound. Następnie tworzę nowy JAXBContext.newInstance (classesToBeBound)
Nieużywane przestrzenie nazw nie są teraz zawarte w pliku XML.
Wiem, że sprawdzanie poprawności xml jest poprawne nawet w przypadku nieużywanych przestrzeni nazw, ale jest to dla mnie coś, z czym powinna poradzić sobie struktura.
Następujący link https://blogs.oracle.com/enterprisetechtips/entry/customizing_jaxb wspomina o różnych stałych (zobacz gdzieś w środku tekstu), ale kiedy próbujesz znaleźć rozwiązanie w tych linkach albo link jest zepsuty, albo nikt go naprawdę nie rozwiązał.
Wszelkie komentarze są mile widziane.
(Edycja) zwykłego tekstu:
DANA
a new instance of JAXBContext and add 2 classes with each a separate namespace.
PO
marshalling a class that has these 2 classes as a property but only 1 of them is not null
TO
I expect only the namespace of the property that is not null to be visible in the XML.
ale rzeczywista jest
that both namespaces are in the xml.
Moje pytanie brzmi: jak mogę usunąć JAXB lub powiedzieć JAXB, aby NIE zapisywał nieużywanych przestrzeni nazw?
Aby umieścić go w java-kod: UDZIELONA
public class Foo{
private Bar bar; //namespace something2
private User user; //namespace user
}
KIEDY
JAXBContext c = JAXBContext.newInstance(Foo.class, Bar.class, User.class);
...
Foo foo = new Foo();
foo.setBar(null);
foo.setUser(new User("Bob"));
marshaller.umarshal(foo);
WTEDY Spodziewam xml być
<foo xmlns="something1" xmlns:user="user">
<user:name>Bob</user:name>
</foo>
ale rzeczywista jest (uwaga przestrzeń nazw something2)
<foo xmlns="something1" xmlns:user="user" xmlns:bar="something2">
<user:name>Bob</user:name>
</foo>
Oczywiście jest to uproszczony przykład, a nasza specyfikacja typu ma około 30 różnych przestrzeni nazw.
Nie jestem pewien, czy poprawnie rozumiem Twój problem. Czy chcesz usunąć wszystkie wartościowe atrybuty z wynikowego pliku XML? I nie jest to duplikat http://stackoverflow.com/questions/11215485/jax-ws-to-remove-empty-tags-from-request-xml – Ota