tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
228
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jogisarge jogisarge ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    19
    hallo zusammen !

    ich empfage nach einem HTTP POST folgende Nachricht:
    PHP-Code:
    <?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-Code:
    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-Code:
    --------------------------------------
    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
     

  2. #2
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    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-Code:
                $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.
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

Ähnliche Themen

  1. Client kann SOAP Antwort nicht verarbeiten
    Von herrentor im Forum PHP
    Antworten: 1
    Letzter Beitrag: 19.05.10, 14:44
  2. Antwort von PHP
    Von Brothers im Forum Flash Plattform
    Antworten: 17
    Letzter Beitrag: 17.12.09, 18:31
  3. XML RPC - Antwort vom Empfangsscript
    Von PoNs im Forum PHP
    Antworten: 0
    Letzter Beitrag: 24.09.07, 22:44
  4. Antwort für Nanaca
    Von general_failure im Forum Cinema 4D
    Antworten: 1
    Letzter Beitrag: 19.06.07, 16:18