Zakładając, że mam schemat, który opisuje klasę elementu głównego Root
, która zawiera List<Entry>
, gdzie klasa Entry
ma wymaganą nazwę pola.Dostosowywanie obsługi błędów procesu unmarshall JAXB
Oto jak to wygląda w kodzie:
@XmlRootElement
class Root{
@XmlElement(name="entry")
public List<Entry> entries = Lists.newArrayList();
}
@XmlRootElement
class Entry{
@XmlElement(name="name",required=true)
public String name;
}
Gdybym podać następujące XML dla unmarshalling:
<root>
<entry>
<name>ekeren</name>
</entry>
<entry>
</entry>
</root>
mam problem ponieważ drugi wpis nie zawiera nazwy. Tak więc unmarshall produkuje null
.
Czy istnieje sposób na dostosowanie JAXB do usunięcia obiektu Root
, który będzie zawierał tylko "dobry" wpis?
to jest dobry pomysł, dzięki. Oczywiście będę musiał ustawić eventHandler, aby był tolerancyjny dla błędu "pole jest wymagane", ale nie powinien to być problem. Zastanawiam się, czy istnieje inne rozwiązanie, próbuję uczynić użytkownika mojego systemu (piszę bibliotekę dla mojej grupy, która zajmuje się konfiguracją), aby móc łatwo ustawić tę funkcję. Mogę to zrobić za pomocą adnotacji i introspekcji klas, aby zobaczyć wszystkie pola, które muszą być przetestowane pod kątem wymaganego problemu nazwy ... wewnątrz afterUnmarshal (...). Będę trzymać to bez odpowiedzi, może jest ktoś z bardziej odpowiadającą odpowiedzią na to, czego potrzebuję. – ekeren
@ekeren zobacz moją edycję, mam nadzieję, że to pomaga. Twoje zdrowie – sfussenegger