我需要在XML格式的响应中添加一个可变值作为属性。我已经设法使用NuSoap创建WSDL,解析请求并创建XML响应。我现在面临的问题是,根据docs,必须在这样的标记内的某个位置插入属性:
<ns1:Expression code="Accepted/Rejected"/>
此响应/值/属性取决于请求中的数据是否成功存储在DB中。到目前为止,我设法通过将复杂类型添加为数组来创建标签。
内部标签:
$server->wsdl->addComplexType(
'Sender',
'complexType',
'struct',
'Sender',
'',
array(
'ID' => array('name' => 'ID', 'type' => 'xsd:string'),
'Code' => array('name' => 'Code', 'type' => 'xsd:string'),
'Sender' => array('name' => 'Sender', 'type' => 'xsd:string')
)
);
外部标签:
$server->wsdl->addComplexType(
'Response',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
// 'Expression' must be a self closing tag, with no value, just 1 attribute
'Expression' => array('name' => 'Expression', '_' => 'code'),
'Status' => array('name' => 'Status', 'type' => 'tns:Status')
)
);
由于我需要将其作为响应发送,因此我在文档中搜索无济于事。
任何帮助将不胜感激
答案 0 :(得分:0)
最后,我没有找到针对此特定情况的解决方案。因此,在server.php文件中创建了一个手动生成的响应,如下所示:
服务器中的功能注册:
$server->register("Process",
array('input' => 'xsd:string'),
array('output' => 'tns:ResponseStruct'),
'ns:sales',
'ns:sales#ProcessMessageUpdate');
返回具有XML结构的字符串:
"<Respond>".
"<ResponseCriteria>".
"<ResponseExpression actionCode=\"".$actionCode."\"/>".
"<ChangeStatus>".
"<Code>".$code."</Code>".
"<Message>".$message."</Message>".
"</ChangeStatus>".
"</ResponseCriteria>".
"</Respond>"
希望这对将来的某人有用