jogi: Soap Antwort verarbeiten

hallo zusammen !

ich empfage nach einem HTTP POST folgende Nachricht:

[PHP]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  soap:Header
    <LoginControl xmlns="http://server.de/w2Connect">
      <username>user</username>
      <password>pass</password>
    </LoginControl>
  </soap:Header>
  soap:Body
    <GetItemInfo xmlns="http://server.de/w2Connect">
      <InItemsRows>
        <InItemsRow>
          <ItemID>24324</ItemID>
          <Quantity>1</Quantity>
        </InItemsRow>
        <InItemsRow>
          <ItemID>2323</ItemID>
          <Quantity>1</Quantity>
        </InItemsRow>
      </InItemsRows>
    </GetItemInfo>
  </soap:Body>
</soap:Envelope>
[/PHP]

ich versuche das so zu verarbeiten:

[PHP]
echo $data;
$xml = new SimpleXMLElement($data);
echo "<br>--------------------------------------<br>";
echo "<pre>";
print_r($xml);
echo "</pre>";
echo "<br>--------------------------------------<br>";
var_dump($xml);
[/PHP]

im ersten $data steht der XML String, wie dargestellt.
print_r und var_dump ergeben das

[PHP]
--------------------------------------
SimpleXMLElement Object
(
)
--------------------------------------
object(SimpleXMLElement)#1 (0) { }
[/PHP]

wie komme ich an die XML Elemente ?

Die Anfrage an den Server stelle ich per HTTP POST mit fputs.

Gruß jogi

  1. echo $begrüßung;

    ich empfage nach einem HTTP POST folgende Nachricht:

    [PHP]
    <?xml version="1.0" encoding="utf-8"?>

    Warum markierst du XML-Code als PHP? Außerdem funktioniert das in diesem Forum anders.

    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      soap:Header

    Du hast hier Namespaces, die du bei der weiteren Verarbeitung berücksichtigen musst. Schau dir dazu die Kommentare im PHP-Handbuch an, um Beispiele zu finden.

    Nach ein wenig probieren gelang es mir, so auf den Benutzernamen zuzugreifen:

    $xml = new SimpleXMLElement($data, null, null, "http://schemas.xmlsoap.org/soap/envelope/");  
    echo $xml->children("http://schemas.xmlsoap.org/soap/envelope/")->Header->children()->LoginControl->username;
    

    echo "$verabschiedung $name";