Java - unmarshalling partial XML in XML schema
less than 1 minute read
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| public class XmlPartialMarshaller<T> {
private static final Logger LOGGER = LoggerFactory.getLogger(XmlPartialMarshaller.class);
private DocumentBuilder documentBuilder;
private DocumentBuilderFactory documentBuilderFactory;
private Binder<Node> binderPartialXml;
private JAXBContext contextPartialXml;
private Class partialSchemaClass;
public XmlPartialMarshaller(Class<T> partialSchemaClass) {
this.partialSchemaClass = partialSchemaClass;
try {
this.documentBuilderFactory = DocumentBuilderFactory.newInstance();
this.documentBuilder = documentBuilderFactory.newDocumentBuilder();
this.contextPartialXml = JAXBContext.newInstance(partialSchemaClass);
this.binderPartialXml = contextPartialXml.createBinder();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
}
public T marshalPartialXml(String xml) {
try {
InputStream inputStream = null;
try {
inputStream = IOUtils.toInputStream(xml);
Document document = documentBuilder.parse(inputStream);
Node xmlNode = document.getDocumentElement();
JAXBElement<T> element = binderPartialXml.unmarshal(xmlNode,
partialSchemaClass);
return element.getValue();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
} finally {
if (inputStream != null)
inputStream.close();
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return null;
}
}
|