Re: [PHP] SimpleXMLElement is not Simple



On Friday 28 September 2007 11:09, Nathan Nobbe wrote:
just curious, what database are you using?

I am using MySQL Ver 14.12 Distrib 5.0.22

cheers,
Jeffery

-nathan

On 9/27/07, Jeffery Fernandez <jeffery@xxxxxxxxxx> 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>&amp;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_paymen
t
env:encodingStyle="http://www.w3.org/2003/05/soap-encoding";><payment_id>5
ce30dcc-7df7-04e8</payment_id><payment_amount>10</payment_amount><callback
_query_string>&amp;payment_id=5ce30dcc-7df7-04e8</callback_query_string><t
ransaction_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

--
Internet Vision Technologies
Level 1, 520 Dorset Road
Croydon
Victoria - 3136
Australia

Attachment: pgpyW5rs5tEDr.pgp
Description: PGP signature



Relevant Pages