I have an autogenerated soap webservice client (using cxf), and some elements are marked to be optional.
If I do not set these elements, the XML request send to the webservice has lot's of elements as follows:
<PayText xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<Name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
These are generated if the wsdl contains:
minOccurs="0" nillable="true"
How can I prevent the generation of these nil elements?
Probably the webservice itself does not need this information, as when I use soapUI and the send the pure xml requests stripping out the nil elements, the request still works.
My binding file:
<jaxb:globalBindings generateElementProperty="false" />
So, how can I prevent them being generated during send?
If an element is minOccurs="0" and nillable="true" then the generated property type will be a JAXBElement, something like JAXBElement<String>. When that property is null it will be excluded from the marshalled XML (null corresponds to minOccurs="0"). To get xsi:nil="true" you need to have an instance of JAXBElement with nil set to true.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With