Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using SOAP to generate XML attributes in PHP

Tags:

php

soap

I found you can generate this in SOAP in php:

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

With this:

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

However, the underscore method does not seem to work when the value is not a number and string, but instead embedded xml code. How would you do this for instance?

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

This is an extension of this person's question: http://www.bigresource.com/Tracker/Track-php-uQwDoUib/

like image 735
Jonah Avatar asked Dec 17 '22 03:12

Jonah


2 Answers

I don't have a quick way of testing, but maybe this would work:

$a = array(
    'foo' => array(
        'bar' => 'blah',
        'aaa' => array(
            '_' => 'blah',
            'a' => "b",
        ),
    ),  
);
like image 97
bogeymin Avatar answered Dec 28 '22 11:12

bogeymin


How can you add an attribute to a node that is the function;

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

or

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

I need to add namescape or xmlns attribute to the actual function name here. I'm getting the following;

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

but I need

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

Need to have ns1:UpdateMember xmlns:ns1="http://www.sample.net/" or something like that.

like image 34
Perspective Avatar answered Dec 28 '22 11:12

Perspective