public function testSerialization()
 {
     $transport = new SOAPDummyTransport();
     $client = new XPSoapClient('http://xp-framework.net/', 'urn://test');
     // Re-set transport as constructor created a copy of it!
     $client->setTransport($transport);
     $client->registerMapping(new \xml\QName('http://net.xp_framework/soap/types', 'SoapTestType'), \lang\XPClass::forName('webservices.unittest.soap.SoapMappingTestTarget'));
     try {
         $client->invoke('foo', new SoapMappingTestTarget('Teststring', 12345));
     } catch (\xml\XMLFormatException $ignored) {
         // We don't receive a "real" answer, which will cause an exception
     }
     $msg = $transport->getRequest();
     $body = $msg->_bodyElement();
     $this->assertEquals('http://net.xp_framework/soap/types', $body->nodeAt(0)->nodeAt(0)->getAttribute('xmlns:ns1'));
     $this->assertEquals('ns1:SoapTestType', $body->nodeAt(0)->nodeAt(0)->getAttribute('xsi:type'));
 }
    public function testDeepArrayResult()
    {
        $transport = new SOAPDummyTransport();
        $transport->setAnswer('<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:si="http://soapinterop.org/xsd"
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:ctl="ctl"
>
<SOAP-ENV:Body>  
  <ctl:irrelevant>
    <item>
      <scalar>some string</scalar>
      <array>
        <string>first value</string>
        <string>second value</string>
      </array>
    </item>
  </ctl:irrelevant>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
');
        $client = new XPSoapClient('http://xp-framework.net/', 'urn://test');
        $client->setTransport($transport);
        $this->assertEquals(['scalar' => 'some string', 'array' => ['string' => ['first value', 'second value']]], $client->invoke('irrelevant'));
    }