2014-09-30 22 views
6

Otomatik olarak oluşturulmuş sabun webservis istemcisine sahibim (cxf kullanarak) ve bazı öğeler isteğe bağlı olarak işaretlenmiştir. wsdl içeriyorsaSabun webservice istemcisindeki xml 'nil' öğelerinin oluşturulması nasıl engellenir?

<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"/> 

Bunlar oluşturulur: şu şekildedir:

ben bu öğeleri ayarlamak yoksa, XML isteği webcoder göndermek çok öğelerinin sahiptir

minOccurs="0" nillable="true" 

Nasıl Bu nil elemanlarının oluşumunu engeller miyim? soapUI'u kullandığımda ve nil öğelerini sıyırma saf xml isteklerini gönderdiğim gibi, muhtemelen web hizmetinin bu bilgiye ihtiyacı yoktur, istek hala çalışır.

Benim bağlama dosyası:

Yani
<jaxb:globalBindings generateElementProperty="false" /> 

, onları sırasında oluşturulan önlemek nasıl gönderebilir?

+0

Olası yinelenen (en azından cevabı olan ilgili bir soru): http://stackoverflow.com/questions/5897785/jaxb-marshaller-always-writes-xsinil-even-when-xmlelementrequired-false-nil – Davio

+1

Gerçekten değil. Ben wsdl (ben sadece müşteri değilim), ne de otomatik üretim sınıfları (wsdl güncellemesinin her gerçekleşmesi durumunda yeniden oluşturulmaları gerektiği gibi) kontrolüm yok. – membersound

+0

Peki, bu durumda muhtemelen WSDL'de bulunan 'nillable = true' nedeniyle şansınız kesiliyor. – Davio

cevap

1

bir eleman minOccurs="0" ve nillable="true" sonra oluşturulan mülkiyet türü bir JAXBElement, JAXBElement<String> gibi bir şey olacaksa. Bu özellik null olduğunda, seçili XML'den dışlanacak (sıfır minOccurs="0"'a karşılık gelir). xsi:nil="true"'u almak için, niltrue olarak ayarlanmış bir örnek JAXBElement olması gerekir.

+0

Yani benim 'nedeniyle mi? "JAXBElement" ile çalışmayı önlemek istiyorum, ancak doğrudan mülkiyete sahip olmak istiyorum, bu yüzden "generateElementProperty = false" ile çalışıyorum. Daha sonra nil unsurları, mülkün sonucu olarak üretildikleri gibi, marshalled xml'den kaldırmak imkansızdır? – membersound

+1

Bu, JAXBElement öğesinin yararlı olduğu durumlardan biridir. Bu olmadan, özellik @XmlElement (nillable = true) ile açıklanacaktır. Gördüğünüz davranışa neden olacaktır. Neden JAXBElement'i kullanmak istemiyorsunuz? –

+2

Otomatik olarak oluşturulmuş öğe özelliklerine erişirken, jaxbelement öğesinin bir tane daha az öğe özelliğine sahip olmasını engellemekteyim. JAXBElement'in bir projede kullanılması gerekip gerekmediği genel olarak söylenebilir mi? – membersound

İlgili konular