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