Erste Wert aus dem SOAP-response in php

Ich bin immer eine SOAP-Antwort zum SOAP-Aufruf, perfekt mit SOAP-ui, aber wenn ich das gleiche in php, ich bin nicht in der Lage zu durchqueren, um das gewünschte element(CreditId in diesem Fall), die ich will.

Im folgenden wird die SOAP-Antwort, die ich bekomme mit SOAP-ui :

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
   <soap-env:Header/>
   <soap-env:Body>
      <n0:getProjectCreditListResponse xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
         <EUserGuid>33/XIcx+3/GxWABQVoJXWA==</EUserGuid>
         <EtCurrCreditList>
            <item>
               <PhaseId/>
               <CreditcategoryDescrption>Project Information Forms</CreditcategoryDescrption>
               <CreditId>CSD1GSP1L-1000008140</CreditId>
            </item>
            <item>
               <PhaseId/>
               <CreditcategoryDescrption>Project Information Forms</CreditcategoryDescrption>
               <CreditId>CSD1GSP2L-1000008140</CreditId>
            </item>
</EtCurrCreditList>
         <EtErrorLogInfo/>
      </n0:getProjectCreditListResponse>
   </soap-env:Body>
</soap-env:Envelope>

Jetzt habe ich gegangen, durch die verschiedene ähnliche Fragen auf der Website, wo es wird empfohlen, zu tun, wie diese, um das gewünschte element :

$client = new SoapClient('wsdl file path',array('trace'=>1,'exceptions'=>1);
$res = $client->getCreditFormDataXml(array(input arguments));

    $xml = simplexml_load_string($res);
    $xml->registerXPathNamespace('soap-env', 'http://schemas.xmlsoap.org/soap/envelope/');
    $xml->registerXPathNamespace('n0', 'urn:sap-com:document:sap:soap:functions:mc-style');
    foreach ($xml->xpath('//EtCurrCreditList//item//CreditId') as $item)
    {
        var_dump($item);
    }

Jedoch bekomme ich eine Fehlermeldung, die besagt, dass

Warning: simplexml_load_string() erwartet parameter 1 zu string

Ich habe versucht, die Umwandlung der $res variable auf eine Zeichenfolge, sondern es gibt eine Fehlermeldung, dass

Objekt der Klasse stdClass konnte nicht in eine Zeichenfolge konvertiert werden

Aber wenn ich var_dump($res), bekomme ich eine Ausgabe wie diese :

object(stdClass)[2]
  public 'EUserGuid' => string 'ß×!Ì~ßñ±X�PV‚WX' (length=16)
  public 'EtCurrCreditList' => 
    object(stdClass)[3]
  public 'EtErrorLogInfo' => 
    object(stdClass)[4]

Warum ist der code nicht zu den untergeordneten Knoten des EtCurrCreditList, so dass ich dann verarbeiten Sie auf den gewünschten Wert. - Gelöst

Letzten Ausgabe :

stdClass Object
(
    [EUserGuid] => ß×!Ì~ßñ±XPVWX
    [EtCurrCreditList] => stdClass Object
        (
            [item] => Array
                (
                    [0] => stdClass Object
                        (
                            [PhaseId] => 
                            [PhaseDescription] => 
                            [CreditcategoryId] => CSD1GSL-1000008140
                            [CreditcategoryDescrption] => Project Information Forms
                            [CreditId] => CSD1GSP1L-1000008140
                         )
            [1] => stdClass Object
                        (
                            [PhaseId] => 
                            [PhaseDescription] => 
                            [CreditcategoryId] => CSD1GSL-1000008140
                            [CreditcategoryDescrption] => Project Information Forms
                            [CreditId] => CSD1GSP2L-1000008140
            )
            [2] => stdClass Object
                        (
                            [PhaseId] => 
                            [PhaseDescription] => 
                            [CreditcategoryId] => CSD1GSL-1000008140
                            [CreditcategoryDescrption] => Project Information Forms
                            [CreditId] => CSD1GSP3L-1000008140
            )
        )

        )

    [EtErrorLogInfo] => stdClass Object
        (
        )
Dies versuchen.dies kann Ihre Fragen zu lösen stackoverflow.com/questions/5048685/...
Hi danke für die Antwort, ich bin Sie die folgenden Schritte nur, aber das problem ist, dass simplexml_load_string - Funktion ist nicht zu erkennen, $res als eine Zeichenkette, die, so wie löse ich dieses problem zuerst. Auch ich habe versucht, kopieren Sie die xml-und die Verwendung dieser als Eingang und dann ausführen des oben aufgeführte Codes gibt es alle creditID ist aber nicht durch die Verwendung von $res als input

InformationsquelleAutor abhi191 | 2013-05-22

Schreibe einen Kommentar