もう一度同じwsdlに関連する質問が返ってきましたが、今回は要求内のすべての名前空間を削除し、wsdlに準拠します。xml内のすべての名前空間を削除し、wsdlごとに有効にします
the linkからの同じwsdl tripservice wsdlは、「from」要素を以下のように置き換えてください。
<xs:element minOccurs="0" name="from" nillable="true">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="12"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
soapuiを使用して、以下のリクエストxmlがwsdlに準拠していることがわかりました。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:trip="http://trip.price.service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<trip:getTripPrice>
<trip>
<adults>9</adults>
<duration>9</duration>
<from xsi:nil="true" />
<rooms>3</rooms>
</trip>
</trip:getTripPrice>
</soapenv:Body>
</soapenv:Envelope>
私は、WSDLに準拠するように、要求からXSI名前空間を削除することができない、要求からのほぼすべての名前空間を削除だけでなく、まだ有効でxsi名前空間を削除する方法
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header/>
<Body>
<getTripPrice xmlns="http://trip.price.service">
<trip xmlns="">
<adults>9</adults>
<duration>9</duration>
<from xsi:nil="true" />
<rooms>3</rooms>
</trip>
</getTripPrice>
</Body>
</Envelope>
wsdlごとに?
いいえwsdlでは、xsi名前空間やその他の名前空間を送信しないように指示できません。 – bmargulies
したがって、名前空間を持つ属性があれば、それを送信する必要があります。要素の場合、要素と一緒にxmlns = "urlに対応する名前空間"を追加すると、その要素と共に名前空間について言及する必要はありません。 – Suresh
名前空間接頭辞定義属性は、メッセージとWSDL /スキーマとの準拠を変更できません。 xmlns =またはプレフィックスを介してノード自体に割り当てられた実際の名前空間の1つ。 – bmargulies