使用SOAP在PHP中生成XML属性

时间:2010-01-12 00:07:18

标签: php soap

我发现你可以在php中用SOAP生成这个:

<foo bar="blah">12345</foo>

有了这个:

array("foo" => array("_" => 12345, "bar" => "blah"));

但是,当值不是数字和字符串,而是嵌入式xml代码时,下划线方法似乎不起作用。你会怎么做呢?

<foo bar="blah">
    <aaa a="b">blah</aaa>
</foo>

这是此人提问的延伸: http://www.bigresource.com/Tracker/Track-php-uQwDoUib/

2 个答案:

答案 0 :(得分:11)

我没有快速的测试方法,但也许这样可行:

$a = array(
    'foo' => array(
        'bar' => 'blah',
        'aaa' => array(
            '_' => 'blah',
            'a' => "b",
        ),
    ),  
);

答案 1 :(得分:1)

如何将属性添加到作为函数的节点;

$update = $soap->UpdateMember($pRecord);

$update = $soap->__soapCall('UpdateMember', array($Updates));

我需要在这里将namescape或xmlns属性添加到实际的函数名称中。我得到了以下内容;

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.sample.net/">
<SOAP-ENV:Body>
<ns1:UpdateMember>
MORE XML HERE
</ns1:UpdateMember>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

但我需要

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.sample.net/">
<SOAP-ENV:Body>
<ns1:UpdateMember xmlns="http://www.sample.net/">
MORE XML HERE
</ns1:UpdateMember>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

需要ns1:UpdateMember xmlns:ns1 =&#34; http://www.sample.net/"或类似的东西。