SoapUI 4.5.1 Pro:我无法保存请求

时间:2016-11-22 08:22:46

标签: xml xsd soapui

我使用SoapUI Pro 4.5.1,我有一个问题。 我的请求包含空值

 let myPicker = UIPickerView()
 @IBOutlet var myText: UITextField!

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    myText.inputView = myPicker

}


 @IBAction func textPiker(_ sender: UITextField) {

    sender.inputView = myPicker
}

我从服务中得到了正确的答复。然后我关闭当前请求并执行另一个请求。然后我再次打开第一个请求(xml-bookmark)。但第一个查询包含数据:

<aa1: parameter1></parameter1>

我必须传递一个空值,而不是零。 为什么要改变? 谢谢!

1 个答案:

答案 0 :(得分:0)

这可能是由于您在WSDL中请求XML模式。如果您检查xsd,您的元素可能定义为:

<xs:element name="parameter1" nillable="true" type="xs:string"/>

nillable属性from documentation的目标是:

  

... 缺少一个元素没有任何特殊含义:它   可能表示该信息未知或不适用,或   由于某些其他原因,该元素可能不存在。 有时它是   希望代表未发货的物品,未知信息或   不明确的信息_exlicitlicit_与元素,而不是一个   缺席元素。

如果节点元素在nillable=true声明中具有xsd属性,则当此元素为空时,允许在XML中具有 xsi:nil 。 / p>

From the documentation:

  

元素上的任何xsi:nil属性都遵守规则。元素是   仅在声明元素时才允许具有xsi:nil属性   仅在元素本身时才允许nillablexsi:nil = 'true'   是空的。

汇总

SOAPUI正在为您推断这一点,并且它正在更改元素,因为它是一个空元素,可能在xsd中声明为nillable。如果要避免这种情况,可以更改WSDL以从此元素中删除nillable=true属性,并在SOAPUI项目中重新加载WSDL。或者,如果您的WS实施得很好,请不要担心,因为在这两种情况下响应都可能是正确的。