From 5ea4e00e7ea56eeabad62f53cd5fb169618fa8c1 Mon Sep 17 00:00:00 2001 From: Ihar Hancharenka Date: Sat, 4 Jan 2025 20:49:12 +0300 Subject: [PATCH] m --- .../xml/jaxb/features/unmarshall-envelope.txt | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 pl/java/libfws/io/formats/xml/jaxb/features/unmarshall-envelope.txt diff --git a/pl/java/libfws/io/formats/xml/jaxb/features/unmarshall-envelope.txt b/pl/java/libfws/io/formats/xml/jaxb/features/unmarshall-envelope.txt new file mode 100644 index 000000000..56895400d --- /dev/null +++ b/pl/java/libfws/io/formats/xml/jaxb/features/unmarshall-envelope.txt @@ -0,0 +1,31 @@ +import some.custom.ObjectFactory; +import some.custom.schemas.schemaname.Response; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.Unmarshaller; +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPMessage; + +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + +import static org.w3c.dom.Node.ELEMENT_NODE; +... +JAXBContext context = JAXBContext.newInstance(ObjectFactory.class); +Unmarshaller unmarshaller = context.createUnmarshaller(); +Resource resource = resourceLoader.getResource(ResourceLoader.CLASSPATH_URL_PREFIX + "soap-response.xml"); + +SOAPMessage message = MessageFactory.newInstance().createMessage(null, resource.getInputStream()); +Document document = message.getSOAPBody().extractContentAsDocument(); +Element rootElement = document.getDocumentElement(); +Node childNode = rootElement.getFirstChild(); +while (childNode != null && childNode.getNodeType() != ELEMENT_NODE) { + childNode = childNode.getNextSibling(); +} +JAXBElement unmarshalledElement = unmarshaller.unmarshal(childNode, Response.class); +Response unmarshalledValue = unmarshalledElement.getValue();