1 package civitas.common;
2
3 import java.io.StringReader;
4
5 import org.springframework.stereotype.Controller;
6
7 import jakarta.xml.bind.JAXBContext;
8 import jakarta.xml.bind.JAXBException;
9 import jakarta.xml.bind.Unmarshaller;
10 import jakarta.xml.bind.annotation.adapters.NormalizedStringAdapter;
11
12 @Controller
13 public class ConvertFromXml {
14
15 public <T> T apply(final String xmlString, final Class<T> klass) throws JAXBException {
16 JAXBContext context = JAXBContext.newInstance(klass);
17 Unmarshaller unmarshaller = context.createUnmarshaller();
18 unmarshaller.setAdapter(new NormalizedStringAdapter());
19
20 try (var reader = new StringReader(xmlString)) {
21 Object o = unmarshaller.unmarshal(reader);
22 return klass.cast(o);
23 }
24 }
25 }