簡體   English   中英

在WSDL中包括XML格式

[英]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>
&lt;data&gt;
 XML Example
&lt;/data&gt;</m:example>
  </m:GetPrice>
</soap:Body>

大多數XML解析器和XML庫都支持此特殊字符escapingremove escaping

基於注釋的更新:是的,如果您甚至想要提供bodyXML定義(即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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM