CastorMapping для маршаллинга и демаршаллинга для тега xsi: nil = "true" - PullRequest
0 голосов
/ 20 июня 2019

какая будет конфигурация для обработки xsi: nil = "true" в файле отображения Castor, я использую org.springframework.oxm.castor.CastorMarshaller

ниже проблема, у меня есть ответ

  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <soapenv:Body>
      <dataResponse xmlns="http://websecureinbox.acs.com">
          <rowDetail>
            <attachmentName>display.pdf</attachmentName>
            <completedDte xsi:nil="true" />
            <contentCode>DOC</contentCode>
            <deleteFlag>Y</deleteFlag>
            <displayEndDte xsi:nil="true" />
            <displayStartDte>2019-06-18 00:00:00</displayStartDte>
            <dueDte xsi:nil="true" />

 <encryptedWebSecureInboxId>Om4FgqxdFTc</encryptedWebSecureInboxId>
            <indIndicativeId>86151740</indIndicativeId>
            <mimeType>application/pdf</mimeType>
            <participantId>249135903</participantId>
            <statusCode>A</statusCode>
            <subject>Test Document Load 2019</subject>
            <typeCode>DB</typeCode>
            <urlLink xsi:nil="true" />
            <webSecureInboxId>57124</webSecureInboxId>
            <workstreamKey xsi:nil="true" />
          </rowDetail>
      </dataResponse>
   </soapenv:Body>
</soapenv:Envelope>

и вот файл сопоставления Castor для преобразования объекта из ответа

 <class name="com.DataResponse">
        <map-to xml="dataResponse" ns-uri="http://www.w3.org/2001/XMLSchema-instance" ns-prefix="xsi"/>
    <field name="rowDetail"  type="com.AbcClass" >
        <bind-xml name="rowDetail" node="element" />
    </field>
    </class>
    <class
    name="com.AbcClass" ns-prefix="xsi">
    <map-to xml="rowDetail" ns-uri="http://websecureinbox.acs.com" />
    <field name="attachmentName" type="java.lang.String">
        <bind-xml name="attachmentName" node="element" />
    </field>
    <field name="completedDte" type="java.lang.String" nillable="true"  required="false">
        <bind-xml name="completedDte" node="element" />
    </field>
    <field name="contentCode" type="java.lang.String">
        <bind-xml name="contentCode" node="element" />
    </field>
    <field name="deleteFlag" type="java.lang.String">
        <bind-xml name="deleteFlag" node="element" />
    </field>
    <field name="displayEndDte" type="java.lang.String" nillable="true" required="false">
        <bind-xml name="displayEndDte" node="element" />
    </field>
    <field name="displayStartDte" type="java.lang.String">
        <bind-xml name="displayStartDte" node="element" />
    </field>
    <field name="dueDte" type="java.lang.String" nillable="true" required="false">
        <bind-xml name="dueDte" node="element" />
    </field>
    <field name="encryptedWebSecureInboxId" type="java.lang.String">
        <bind-xml name="encryptedWebSecureInboxId" node="element" />
    </field>
    <field name="indIndicativeId" type="java.lang.Integer">
        <bind-xml name="indIndicativeId" node="element" />
    </field>
    <field name="mimeType" type="java.lang.String">
        <bind-xml name="mimeType" node="element" />
    </field>
    <field name="participantId" type="java.lang.String">
        <bind-xml name="participantId" node="element" />
    </field>
    <field name="statusCode" type="java.lang.String">
        <bind-xml name="statusCode" node="element" />
    </field>
    <field name="subject" type="java.lang.String">
        <bind-xml name="subject" node="element" />
    </field>
    <field name="typeCode" type="java.lang.String">
        <bind-xml name="typeCode" node="element" />
    </field>
    <field name="urlLink" type="java.lang.String" nillable="true" required="false">
        <bind-xml name="urlLink" node="element" />
    </field>
    <field name="webSecureInboxId" type="java.lang.Integer">
        <bind-xml name="webSecureInboxId" node="element" />
    </field>
    <field name="workstreamKey" type="java.lang.String" nillable="true" required="false">
            <bind-xml name="workstreamKey" node="element" />
        </field>
    </class>

У меня есть ns-prefix = "xsi" вместе с пространством имен, но он не работает

...