Re: SimpleXMLElement is not Simple
| From: | Nathan Nobbe | Date: | Fri, 28 Sep 2007 01:09:13 +0000 |
| Subject: | Re: SimpleXMLElement is not Simple | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-262547@lists.php.net to get a copy of this message | ||
just curious, what database are you using?
-nathan
On 9/27/07, Jeffery Fernandez <jeffery@ivt.com.au> wrote:
>
> I am having nightmares with this bit off code.
>
> The following code work perfectly fine:
>
> $soap_request_string = <<<XML
> <?xml version="1.0" encoding="UTF-8"?>
> <env:Envelope
> xmlns:env="http://www.w3.org/2003/05/soap-envelope"
> xmlns:ns1="urn:Gateway_Proxy"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:enc="
> http://www.w3.org/2003/05/soap-encoding">
> <env:Body>
> <ns1:make_proxy_payment env:encodingStyle="
> http://www.w3.org/2003/05/soap-encoding">
> <payment_id>61ecc268-1cd0-f468</payment_id>
> <payment_amount>15495</payment_amount>
>
>
> <callback_query_string>&payment_id=61ecc268-1cd0-f468</callback_query_string>
> <transaction_note>Order from Student Library Fees with Payment Id:
> 61ecc268-1cd0-f468</transaction_note>
> </ns1:make_proxy_payment>
> </env:Body>
> </env:Envelope>
> XML;
>
> $xml = new SimpleXMLElement($soap_request_string, NULL, false, '
> http://www.w3.org/2003/05/soap-envelope');
> print_r($xml);
> $ns = $xml->getNamespaces(true);
> //print_r($ns);
>
> foreach ($xml->children($ns['env']) as $body)
> {
> //printf("%s<br />", $body->getName());
>
> foreach ($body->children($ns['ns1']) as $function)
> {
> printf("function %s()<br />", $function->getName());
>
> foreach ($function->children() as $parameters)
> {
> printf("%s => \"%s\"<br />",
> $parameters->getName(),
> $parameters);
> }
> }
> }
>
>
> However when the XML string is coming from the database it does not work.
> The Field and table have a collation of "utf8_unicode_ci"
>
> $soap_request_string = trim(str_replace(array("\n"), '',
> $record['SoapRequestEnvelope']));
> $xml = new SimpleXMLElement($soap_request_string, NULL, false, '
> http://www.w3.org/2003/05/soap-envelope');
> print_r($xml);
>
>
> The above code is supposed to print out the following (for me to proceed
> further):
>
> SimpleXMLElement Object
> (
> [Body] => SimpleXMLElement Object
> (
> )
> )
>
>
> but only returns:
> SimpleXMLElement Object
> (
> )
>
>
> The XL string from the database looks exactly like this (after replacing
> new lines):
>
> <?xml version="1.0" encoding="UTF-8"?><env:Envelope
> xmlns:env="
> http://www.w3.org/2003/05/soap-envelope"
> xmlns:ns1="urn:Gateway_Proxy"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance"
> xmlns:enc="
>
> http://www.w3.org/2003/05/soap-encoding"><env:Body><ns1:make_proxy_payment
>
> env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><payment_id>5ce30dcc-7df7-04e8</payment_id><payment_amount>10</payment_amount><callback_query_string>&payment_id=5ce30dcc-7df7-04e8</callback_query_string><transaction_note>Order
> from Student Library Fees with Payment Id:
>
> 5ce30dcc-7df7-04e8</transaction_note></ns1:make_proxy_payment></env:Body></env:Envelope>
>
>
> I can't figure out whats wrong with the code. Any suggestions?
>
> cheers,
> Jeffery
> --
> Internet Vision Technologies
> Level 1, 520 Dorset Road
> Croydon
> Victoria - 3136
> Australia
>
>