Soap Antwort verarbeiten

jogisarge

Grünschnabel
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>
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);
im ersten $data steht der XML String, wie dargestellt.
print_r und var_dump ergeben das
PHP:
--------------------------------------
SimpleXMLElement Object
(
)
--------------------------------------
object(SimpleXMLElement)#1 (0) { }

wie komme ich an die XML Elemente ?

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

Gruß jogi
 
Nach wie vor das Problem das einige in letzter Zeit hatten... SimpleXML kann nicht mit den Namespaces umgehen.

<soap:Header> Funktioniert nicht, eine schnelle Lösung ist es mit einem RegEx Pattern wie das hier:
PHP:
            $str = preg_replace("%(<[a-zA-Z//-]+)(:)(.*>)%iUs","\\1_\\3",$str);
Um den String von den Namespaces zu befreien und die : durch _ zu ersetzen. Ich hoffe mal das früher oder später eine gefixte Simple XML Klasse baut die es schafft damit umzugehen.

btw wenn namespaces bei Attributen auftreten funktioniert der Zugriff auf die Elemente aber keine XPaths mehr.
 
Zurück