oto banalny fragment z mojego pliku XSDDodanie dodatkowych metod do klasy JAXB wytwarzanej z schematu
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="ns"
xmlns:tns="sns" elementFormDefault="qualified">
<element name="document">
<attribute name="title" use="required"/>
</element>
</schema>
używam maven-jaxb2-plugin
generować klas Java z tego. Klasa Document
ma metodę getTitle()
, która zwraca tekst atrybutu title
.
chcę dodać dodatkową metodę Document
:
public String getStrippedTitle() {
return getTitle().replaceAll("\\s+", "");
}
Chcę moja dodatkowa metoda pojawiać się na unmarshalled obiektu (zamiast mi tylko nazywając ją albo napisanie klasy otoki), ponieważ chcę, aby przejść najwyższego poziomu unmarshalled obiekt wyłączony do szablonu łańcucha i niech iteruje nad pod-elementami wywołującymi moją dodatkową metodę.
Znalazłem instructions, ale polecono mi ustawić właściwość na Unmarshaller
, a moja implementacja (Mac OS X, Java 7) nie obsługuje żadnych właściwości.
Jak powinienem to zrobić?
To działa. Dzięki! Czy masz jakieś sugestie dotyczące lepszej ogólnej metody usuwania pliku XML na klasy Java za pomocą dodatkowych metod? Próbowałem SAX przed JAXB, ale czułem się tak, jakbym właśnie pisał własne (kruche) wdrożenie JAXB. –
@NathanielWaisbrot - Nie trzeba generować modelu JAXB ze schematu XML. Możesz rozpocząć od dowolnego modelu obiektu, który chcesz i użyć adnotacji JAXB do skonfigurowania mapowania XML. –