PHP SoapServer - 节点中的属性

时间:2016-05-26 17:50:35

标签: php xml soap wsdl

我已经在其他地方看到过这个问题,但我仍然无法使其发挥作用,所以我需要进一步澄清:

给出的例子是:

$tag['_'] = 'yyy'; 
$tag['attr'] = 'xxx'; 
$tagVar = new SoapVar($tag, SOAP_ENC_OBJECT);

生成的xml将是:

<tag attr="xxx">yyy</tag>

然而,我正在

<tag>
  <_>yyy</_>
  <attr>xxx</attr>
</tag>

那么,还有什么需要让它按预期工作吗?甚至在SoapServer类或WSDL中的某种配置?

为了使事情复杂化,元素是命名空间,所以实际上我正在寻找一种方法来获取

<ns:tag attr="xxx">yyy</ns:tag>

让我惊讶的是,使用SoapClient和SoapServer完成任务有多难,以及SO和其他地方关于这个主题的大部分问题是如何由提出问题的同一个人回答的。当然,在经过数小时(数天)的斗争之后,会出现某种黑客或奇怪的无证行为。

1 个答案:

答案 0 :(得分:2)

PHP肥皂功能如此疯狂,我从来没有发现它的错误。我试图通过SOAP API连接和更新数据到zimbra,并且有很多问题。所以我使用了SimpleXMLElement&amp;卷曲:)

您可以像这样构建XML:

$xml = $xml->addChild('tag', str_replace('&', '&amp;', 'yyy'), 'ns');
$xml->attr = 'xxx';

echo $xml->asXML(); // which returns : <tag>yyy<attr>xxx</attr></tag>

对于命名空间,addChild中有一个名称空间参数,但这不会输出你想要的...

htmlspecialchars

PS:如果您在浏览器中运行,请不要忘记print("Give me keywords") keywords = input() print("Those are nice " + keywords) 回声:)