Guten Morgen.
Ich möchte gerne folgenden XML String in Object mappen:
Dazu habe ich folgenden Klassen erstellt:
Zum eigentlichen Mappen verwende ich folgenden Code:
WEnn ich nun den Code laufen lassen bekomme ich folgenden Fehler :
Für mich auch nachvollziehbar, da ja im Seasons Root element noch das Attribut "xmlns="http://sams-server.de/api/xml/ns/seasons" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sams-server.de/api/xml/ns/seasons seasons.xsd" hängt. Nun meine Frage wie kann man das konfigurieren ?
Vielen Dank für die Hilfe
Ich möchte gerne folgenden XML String in Object mappen:
Code:
<seasons xmlns="http://sams-server.de/api/xml/ns/seasons" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sams-server.de/api/xml/ns/seasons seasons.xsd">
<season>
<id>766158250</id>
<name>2023/24</name>
<begin>2023-07-01</begin>
<end>2024-06-30</end>
</season>
...
</seasons>
Dazu habe ich folgenden Klassen erstellt:
Java:
@XmlRootElement(name = "seasons")
@Getter
@ToString
public class XMLSeasons implements XMLObject {
@XmlElement(name = "season")
private List<XMLSeason> seasons;
}
Code:
@Getter
@ToString
public class XMLSeason {
@XmlElement
private String id;
}
Zum eigentlichen Mappen verwende ich folgenden Code:
Java:
@Component
@Log4j2
public class XMLSeasonMapper implements XMLMapper<XMLSeasons> {
@Override
@SneakyThrows
public XMLSeasons mapXMLToObject(@NonNull String xmlData) {
JAXBContext jaxbContext = JAXBContext.newInstance(XMLSeasons.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xmlData);
XMLSeasons xmlSeasons = (XMLSeasons) unmarshaller.unmarshal(reader);
xmlSeasons.getSeasons().stream().forEach(mappedSeason -> log.info("{}", kv("xml season", mappedSeason)));
return xmlSeasons;
}
}
WEnn ich nun den Code laufen lassen bekomme ich folgenden Fehler :
Code:
jakarta.xml.bind.UnmarshalException: unerwartetes Element (URI:"http://sams-server.de/api/xml/ns/seasons", lokal:"seasons"). Erwartete Elemente sind [{}seasons]
Für mich auch nachvollziehbar, da ja im Seasons Root element noch das Attribut "xmlns="http://sams-server.de/api/xml/ns/seasons" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sams-server.de/api/xml/ns/seasons seasons.xsd" hängt. Nun meine Frage wie kann man das konfigurieren ?
Vielen Dank für die Hilfe