1. 程式人生 > >命名空間別名的問題

命名空間別名的問題

原始的請求如下

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://www.2345.com/switch">
   <soapenv:Header/>
   <soapenv:Body>
      <ns2:subscriptionRequest>
         <ns2:id>1</ns2:id>
         <ns2:name>2</ns2:name>
         <ns2:email>3</ns2:email>
      </ns2:subscriptionRequest>
   </soapenv:Body>
</soapenv:Envelope>

實際要求的格式如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <subscriptionRequest xmlns="http://www.2345.com/switch">
         <id>1</id>
         <name>2</name>
         <email>3</email>
      </subscriptionRequest>
   </soapenv:Body>
</soapenv:Envelope>

解決辦法如下:

在你的subscriptionRequest這個Model包目錄下新建package-info.java

@XmlSchema(
        namespace = "http://www.2345.com/switch",
elementFormDefault = XmlNsForm.QUALIFIED,
xmlns = {
                @XmlNs(prefix = "", namespaceURI = "http://www.2345.com/switch")
        }
)
package com.test.model;
import javax.xml.bind.annotation.XmlNs
; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema;

當然你也可以prefix替換成你自己定義的名稱空間的別名