Edit report at http://bugs.php.net/bug.php?id=46616&edit=1
ID: 46616 Comment by: mail2alfonso at yahoo dot com Reported by: justin dot hendrickson at gmail dot com Summary: Value dropped when Soap response with nodes containing attributes and value Status: Open Type: Bug Package: SOAP related Operating System: Ubuntu 8.04 PHP Version: 5.2.6 Block user comment: N Private report: N New Comment: Was this bug ever assigned to anyone? Still reproducible in 5.3. SOAP XML Response: ------------------ <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Header/> <soap:Body> <GetBeeSerialSavingsClubSummaryOpenResponse xmlns="[REMOVED]"> <SerialSummaryResult> <SerialSummaries> <SavingsClubSerialSummary> <SerialNumber>69956</SerialNumber> <ExpirationDate IsNull="false" DateTimeValue="2011-08-07T09:21:44.1400000-05:00"/> <IssueDate IsNull="false" DateTimeValue="2011-02-07T09:21:44.1400000-06:00"/> <InitialValue IsNull="false" DecimalValue="100.0000"/> <CurrentValue IsNull="false" DecimalValue="100"/> </SavingsClubSerialSummary> <SavingsClubSerialSummary> <SerialNumber>77847</SerialNumber> <ExpirationDate IsNull="false" DateTimeValue="2011-09-04T10:23:05.5300000-05:00"/> <IssueDate IsNull="false" DateTimeValue="2011-03-04T10:23:05.5300000-06:00"/> <InitialValue IsNull="false" DecimalValue="100.0000"/> <CurrentValue IsNull="false" DecimalValue="100"/> </SavingsClubSerialSummary> <SavingsClubSerialSummary> <SerialNumber>76180</SerialNumber> <ExpirationDate IsNull="false" DateTimeValue="2011-08-19T04:13:01.0970000-05:00"/> <IssueDate IsNull="false" DateTimeValue="2011-02-19T04:13:01.0970000-06:00"/> <InitialValue IsNull="false" DecimalValue="100.0000"/> <CurrentValue IsNull="false" DecimalValue="100"/> </SavingsClubSerialSummary> <SavingsClubSerialSummary> <SerialNumber>09896</SerialNumber> <ExpirationDate IsNull="false" DateTimeValue="2011-07-26T10:21:46.4330000-05:00"/> <IssueDate IsNull="false" DateTimeValue="2011-01-26T10:21:46.4330000-06:00"/> <InitialValue IsNull="false" DecimalValue="100.0000"/> <CurrentValue IsNull="false" DecimalValue="100"/> </SavingsClubSerialSummary> <SavingsClubSerialSummary> <SerialNumber>MG_20110405-1</SerialNumber> <ExpirationDate IsNull="false" DateTimeValue="2011-10-02T17:17:46.1570000-05:00"/> <IssueDate IsNull="false" DateTimeValue="2011-04-05T00:00:00.0000000-05:00"/> <InitialValue IsNull="false" DecimalValue="500.0000"/> <CurrentValue IsNull="false" DecimalValue="500"/> </SavingsClubSerialSummary> <SavingsClubSerialSummary> <SerialNumber>07724</SerialNumber> <ExpirationDate IsNull="false" DateTimeValue="2011-07-31T22:33:00.1300000-05:00"/> <IssueDate IsNull="false" DateTimeValue="2011-01-31T22:33:00.1300000-06:00"/> <InitialValue IsNull="false" DecimalValue="100.0000"/> <CurrentValue IsNull="false" DecimalValue="100"/> </SavingsClubSerialSummary> </SerialSummaries> </SerialSummaryResult> </GetBeeSerialSavingsClubSummaryOpenResponse> </soap:Body> </soap:Envelope> Object Returned by SoapClient (in print_r format): -------------------------------------------------- stdClass Object ( [SerialSummaries] => stdClass Object ( [SavingsClubSerialSummary] => Array ( [0] => stdClass Object ( [SerialNumber] => 69956 [ExpirationDate] => [IssueDate] => [InitialValue] => [CurrentValue] => ) [1] => stdClass Object ( [SerialNumber] => 77847 [ExpirationDate] => [IssueDate] => [InitialValue] => [CurrentValue] => ) [2] => stdClass Object ( [SerialNumber] => 76180 [ExpirationDate] => [IssueDate] => [InitialValue] => [CurrentValue] => ) [3] => stdClass Object ( [SerialNumber] => 09896 [ExpirationDate] => [IssueDate] => [InitialValue] => [CurrentValue] => ) [4] => stdClass Object ( [SerialNumber] => MG_20110405-1 [ExpirationDate] => [IssueDate] => [InitialValue] => [CurrentValue] => ) [5] => stdClass Object ( [SerialNumber] => 07724 [ExpirationDate] => [IssueDate] => [InitialValue] => [CurrentValue] => ) ) ) ) As you can see, the attributes are NOT populated with the appropriate values. $ php -v PHP 5.3.2-1ubuntu4.7 with Suhosin-Patch (cli) (built: Jan 12 2011 18:36:55) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with Xdebug v2.0.5, Copyright (c) 2002-2008, by Derick Rethans Previous Comments: ------------------------------------------------------------------------ [2009-12-09 18:22:20] justin dot hendrickson at gmail dot com No good. The descriptions are still missing the relevant information. ["descriptions"]=> object(stdClass)#17 (1) { ["pd"]=> array(4) { [0]=> object(stdClass)#18 (1) { ["t"]=> int(1) } [1]=> object(stdClass)#19 (1) { ["t"]=> int(2) } [2]=> object(stdClass)#20 (1) { ["t"]=> int(3) } [3]=> object(stdClass)#21 (1) { ["t"]=> int(0) } } } $> php -v PHP 5.2.12RC4-dev (cli) (built: Dec 9 2009 09:56:13) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies ------------------------------------------------------------------------ [2009-12-08 20:48:52] fel...@php.net Please try using this snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://windows.php.net/snapshots/ ------------------------------------------------------------------------ [2009-06-15 09:58:06] darkservant at gmail dot com Also happens on Windows and PHP 5.2.9 where a soap response contains a namespace: SOAP Response containing <TOKEN xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="false">xyz</TOKEN> produces a TOKEN => NULL instead of TOKEN => xyz inside the response object. ------------------------------------------------------------------------ [2008-11-19 14:49:52] justin dot hendrickson at gmail dot com Description: ------------ When casting a Soap response to a PHP value, if a node containing both attributes and a value is encountered, the value is dropped. There's not much information about what is suppose to happen in this case, but from what I gathered, the value is suppose to end up in a property named "_". Reproduce code: --------------- The service is private, so I cannot provide the URL, but I can supply the WSDL file upon email request. I can provide the result of the Soap request: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body> <SearchResult xmlns="http://com.etilize.spexlive" count="921"> <products> <productSummary id="1011038602"><manufacturer sku="MFC-9440CN" name="Brother Industries, Ltd" id="10328"/> <skus> <sku val="MFC-9440CN" type="MFGPARTNUMBER"/> <sku val="BRT MFC9440CN" type="SP Richards Catalog"/> <sku val="BRTMFC9440CN" type="SP Richards"/> <sku val="BRTMFC9440CN" type="United"/> <sku val="BRTMFC9440CN" type="IS Group"/> <sku val="BRTMFC9440CN" type="TriMega"/> </skus> <descriptions> <pd t="2">Brother MFC-9440CN Multifunction Printer</pd> <pd t="1">Brother MFC-9440CN Multifunction Printer - Color Laser - 21 ppm Mono - 21 ppm Color - 2400 x 600 dpi - Fax, Copier, Scanner, Printer - PictBridge - Mac</pd> <pd t="3">Multifunction Network Printer - Color Laser - 21 ppm Mono - 21 ppm Color - 2400 x 600 dpi - Fax, Copier, Scanner, Printer - PictBridge - Mac</pd> <pd t="0">MFC-9440CN CLR LASER P/S/C/F USB 2400X600 64MB 21PPM</pd> </descriptions> </productSummary> </products> </SearchResult> </soap:Body> </soap:Envelope> Expected result: ---------------- object(stdClass)#2 (2) { ["products"]=> object(stdClass)#3 (1) { ["productSummary"]=> array(1) { [0]=> object(stdClass)#4 (4) { ["manufacturer"]=> object(stdClass)#5 (3) { ["id"]=> int(10328) ["name"]=> string(23) "Brother Industries, Ltd" ["sku"]=> string(10) "MFC-9440CN" } ["skus"]=> object(stdClass)#6 (1) { ["sku"]=> array(6) { [0]=> object(stdClass)#7 (2) { ["val"]=> string(10) "MFC-9440CN" ["type"]=> string(13) "MFGPARTNUMBER" } [1]=> object(stdClass)#8 (2) { ["val"]=> string(13) "BRT MFC9440CN" ["type"]=> string(19) "SP Richards Catalog" } [2]=> object(stdClass)#9 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(11) "SP Richards" } [3]=> object(stdClass)#10 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(6) "United" } [4]=> object(stdClass)#11 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(8) "IS Group" } [5]=> object(stdClass)#12 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(7) "TriMega" } } } ["descriptions"]=> object(stdClass)#13 (1) { ["pd"]=> array(4) { [0]=> object(stdClass)#14 (1) { ["_"]=> "Brother MFC-9440CN Multifunction Printer" ["t"]=> int(2) } [1]=> object(stdClass)#15 (1) { ["_"]=> "Brother MFC-9440CN Multifunction Printer - Color Laser - 21 ppm Mono - 21 ppm Color - 2400 x 600 dpi - Fax, Copier, Scanner, Printer - PictBridge - Mac" ["t"]=> int(1) } [2]=> object(stdClass)#16 (1) { ["_"]=> "Multifunction Network Printer - Color Laser - 21 ppm Mono - 21 ppm Color - 2400 x 600 dpi - Fax, Copier, Scanner, Printer - PictBridge - Mac" ["t"]=> int(3) } [3]=> object(stdClass)#17 (1) { ["_"]=> "MFC-9440CN CLR LASER P/S/C/F USB 2400X600 64MB 21PPM" ["t"]=> int(0) } } } ["id"]=> int(1011038602) } } } ["count"]=> int(921) } Actual result: -------------- object(stdClass)#2 (2) { ["products"]=> object(stdClass)#3 (1) { ["productSummary"]=> array(1) { [0]=> object(stdClass)#4 (4) { ["manufacturer"]=> object(stdClass)#5 (3) { ["id"]=> int(10328) ["name"]=> string(23) "Brother Industries, Ltd" ["sku"]=> string(10) "MFC-9440CN" } ["skus"]=> object(stdClass)#6 (1) { ["sku"]=> array(6) { [0]=> object(stdClass)#7 (2) { ["val"]=> string(10) "MFC-9440CN" ["type"]=> string(13) "MFGPARTNUMBER" } [1]=> object(stdClass)#8 (2) { ["val"]=> string(13) "BRT MFC9440CN" ["type"]=> string(19) "SP Richards Catalog" } [2]=> object(stdClass)#9 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(11) "SP Richards" } [3]=> object(stdClass)#10 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(6) "United" } [4]=> object(stdClass)#11 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(8) "IS Group" } [5]=> object(stdClass)#12 (2) { ["val"]=> string(12) "BRTMFC9440CN" ["type"]=> string(7) "TriMega" } } } ["descriptions"]=> object(stdClass)#13 (1) { ["pd"]=> array(4) { [0]=> object(stdClass)#14 (1) { ["t"]=> int(2) } [1]=> object(stdClass)#15 (1) { ["t"]=> int(1) } [2]=> object(stdClass)#16 (1) { ["t"]=> int(3) } [3]=> object(stdClass)#17 (1) { ["t"]=> int(0) } } } ["id"]=> int(1011038602) } } } ["count"]=> int(921) } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=46616&edit=1