gpt4 book ai didi

PHP SoapServer - 节点中的属性

转载 作者:可可西里 更新时间:2023-11-01 13:27:35 27 4
gpt4 key购买 nike

我已经在其他地方看到这个问题的答案,但我仍然无法解决这个问题,所以我需要进一步说明:

给出的例子是:

$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>

最佳答案

PHP soap 函数太疯狂了,我从来没有发现它有什么问题。我试图通过 SOAP API 将数据连接并更新到 zimbra 中,但遇到了很多问题。所以我使用了 SimpleXMLElement 和 Curl :)

在那里你可以像这样构建你的 XML :

$xml = new SimpleXMLElement('<soap></soap>'); // create your base

$xml = $xml->addChild('tag', str_replace('&', '&amp;', 'yyy')); // see addChild in docs
$xml->attr = 'xxx'; // escaping content rather than addAttribute which does not

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

对于命名空间,在addChild中有一个命名空间参数,但这并没有输出你想要的...

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

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

PS :如果您在浏览器中运行,请不要忘记 htmlspecialchars 回显 :)

关于PHP SoapServer - 节点中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37467847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com