Bug #46616 [Com]: Value dropped when Soap response with nodes containing attributes and value

From: Date: Thu, 17 Mar 2016 09:02:57 +0000
Subject: Bug #46616 [Com]: Value dropped when Soap response with nodes containing attributes and value
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-199883@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=46616&edit=1

 ID:                 46616
 Comment by:         florian dot eberle at gmail 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:

This annoying bug is sadly still present in the current version PHP 7.0.4. Id be happy if someone
could have a look at this :/ Thanks!


Previous Comments:
------------------------------------------------------------------------
[2011-04-08 18:24:15] mail2alfonso at yahoo dot com

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

------------------------------------------------------------------------
[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] felipe@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 https://bugs.php.net/bug.php?id=46616&edit=1


Thread (6 messages)

« previous php.bugs (#199883) next »