When a WSDL defines an element that has a minOccurs='0' you get an additional specified flag for that field that indicates if you want to actually send the field. The setter for the field value should also set the specified flag as well, If i've set a value in the field then its because i want to send it. This makes it vastly more natural to work with.