[英]Including XML format in WSDL
我的方法簽名顯示在下面:
public String test(@WebParam(name = "INPUTPACKET") String inputPacket)
問題是inputPacket參數接受XML,並且WSDL文件結構將inputPacket顯示為字符串類型,因此如何獲取WSDL來容納我希望輸入數據包包含的XML結構
我嘗試手動編輯WSDL以適應XML結構,然后將API調用發送到我的方法,但是失敗,顯示以下錯誤:
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"", local:"RESPONSEPACKET"). Expected elements are (none)
在SOAP服務中, string
可以具有XML
。 您只需使用[CDATA]
1來確保正確地escape
XML
。
舉例來說,您的XML看起來像這樣-
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="https://www.w3schools.com/prices">
<m:example>
<![CDATA[<data>
XML Example
</data>]]></m:example>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
也有另一種選擇,但以上一種更好。
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="https://www.w3schools.com/prices">
<m:example>
<data>
XML Example
</data></m:example>
</m:GetPrice>
</soap:Body>
大多數XML解析器和XML庫都支持此特殊字符escaping
並remove escaping
。
基於注釋的更新:是的,如果您甚至想要提供body
的XML
定義(即XSD ),都可以這樣做。 這是簡單的方法。
<GetPrice xmlns="https://www.example.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.example.com/xml/price.xsd"></GetPrice>
希望它會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.