Rucna deserializacia xml pochadzajuceho zo soap message

Petr Prochazka petrprochy na gmail.com
Pátek Listopad 6 11:10:04 CET 2009


2009/11/6 Dusan Zatkovsky <msk.conf na gmail.com>

> Ahoj.
>
> Snazim sa vyriesit nasledovny problem ( tyka sa to datovych schranok ):
>
> Mam k dispozicii xml, ktore vyzera byt fragmentom nejakej soap message (
> asi jej payloadom ).
>
> Konkretny priklad:
>
> <?xml version="1.0"?>
> <q:MessageDownloadResponse xmlns:q="http://isds.czechpoint.cz/v20/message"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" isds_send="
> https://www.czebox.cz/any/DS/dz">
>  <q:dmReturnedMessage>
>    <p:dmDm xmlns:p="http://isds.czechpoint.cz/v20">
>      <p:dmID>101761</p:dmID>
>      <p:dbIDSender>abcdefgh</p:dbIDSender>
>        ....
>        ....
>
> Takisto mam k dispozicii mnozstvo java class, vygenerovanych z xsd-cok, do
> ktorych sa pri priamom volani webservice
> toto xml transformuje.
>
> Ja by som rad to xml nejak deserializoval vyuzitim tych class a nepisal si
> vlastny sax parser.
> Som si takmer isty ( z priameho volania ws ), ze vysledok by mal byt v
> class-e Holder<TReturnedMessage>.
> Nedari sa mi ale prist na sposob, ako na to.
>
> Hladal som "MessageDownloadResponse", to som nasiel vo wsdl ako:
>
>  <message name="MessageDownloadResponse">
>    <part name="parameter" element="tns:MessageDownloadResponse" />
>  </message>
>
> Skusil som si vygenerovat .java zdrojaky z wsdl a skumat tam, ale jedine,
> na co som narazil, je:
>
> ObjectFactory.java:
>
>    @XmlElementDecl(namespace = "http://isds.czechpoint.cz/v20", name =
> "MessageDownloadResponse")
>    public JAXBElement<TMessDownOutput>
> createMessageDownloadResponse(TMessDownOutput value) {
>        return new
> JAXBElement<TMessDownOutput>(_MessageDownloadResponse_QNAME,
> TMessDownOutput.class, null, value);
>    }
>
Toto je standardni pouzivani JAXB frameworku. JAXBElement je pouze obalka
pro dany objekt. Objekt lze ziskat metodou getValue():T


>
> a
>
> DmOperationsPortType.java:
>
>    @WebMethod(operationName = "MessageDownload")
>    @RequestWrapper(localName = "MessageDownload", targetNamespace = "
> http://isds.czechpoint.cz/v20", className =
> "cz.czechpoint.isds.v20.TIDMessInput")
>    @ResponseWrapper(localName = "MessageDownloadResponse", targetNamespace
> = "http://isds.czechpoint.cz/v20", className =
> "cz.czechpoint.isds.v20.TMessDownOutput")
>    public void messageDownload(
>        @WebParam(name = "dmID", targetNamespace = "
> http://isds.czechpoint.cz/v20")
>        String dmID,
>        @WebParam(name = "dmReturnedMessage", targetNamespace = "
> http://isds.czechpoint.cz/v20", mode = WebParam.Mode.OUT)
>        Holder<TReturnedMessage> dmReturnedMessage,
>        @WebParam(name = "dmStatus", targetNamespace = "
> http://isds.czechpoint.cz/v20", mode = WebParam.Mode.OUT)
>        Holder<TStatus> dmStatus);
>
Tyto anotace nepatri k JAXB, ale k pouzitemu WS klientu.


>
> Tymto veciam vobec nerozumiem, predpokladam, ze tie anotacie robia nejaku
> magiu, ktora je mojim ociam ukryta.
>
> Tusi niekto ako na to?
>
> Dik.
>
>
> --
> Dusan
>


Petr Prochazka
------------- dal?í ?ást ---------------
HTML p?íloha byla odstran?na...
URL: <http://amaio.cz/pipermail/konference/attachments/20091106/ecab5ea5/attachment.htm>


Další informace o konferenci Konference