Tuesday, 31 July 2012

Parsing Zimbra SOAP response with SimpleXML and xpath


  1. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  2.   <soap:Header>
  3.     <context xmlns="urn:zimbra">
  4.       <change token="20333"/>
  5.     </context>
  6.   </soap:Header>
  7.   <soap:Body>
  8.     <CreateAccountResponse xmlns="urn:zimbraAdmin">
  9.       <account id="83ebf344-dc51-47ae-9a36-3eb24281d53e" name="iamtesting@example.com">
  10.         <a n="zimbraId">83ebf344-dc51-47ae-9a36-3eb24281d53e</a>
  11.         <a n="zimbraMailDeliveryAddress">iamtesting@example.com</a>
  12.       </account>
  13.     </CreateAccountResponse>
  14.   </soap:Body>
  15. </soap:Envelope>
  16.        
  17. $xml = new SimpleXMLElement($data);
  18.        
  19. $xml->registerXPathNamespace('soap', 'http://www.w3.org/2003/05/soap-envelope');
  20.        
  21. $body = $xml->xpath('//soap:Body');
  22.        
  23. $CreateAccountResponse = $xml->xpath('//soap:Body/CreateAccountResponse');
  24.        
  25. $CreateAccountResponse = $body[0]->CreateAccountResponse;
  26.        
  27. $zimbraId = $CreateAccountResponse->account->xpath('a[@n=zimbraId]');
  28.        
  29. $zimbraId = strstr($data, "<a n="zimbraId"");
  30. $zimbraId = strstr($zimbraId, ">");
  31. $zimbraId = substr($zimbraId, 1, strpos($zimbraId, "<") - 1);
  32.        
  33. <CreateAccountResponse xmlns="urn:zimbraAdmin">
  34.        
  35. $xml->registerXPathNamespace('soap', 'http://www.w3.org/2003/05/soap-envelope');
  36. $xml->registerXPathNamespace('zimbra', 'urn:zimbraAdmin');
  37. $CreateAccountResponse = $xml->xpath('//soap:Body/zimbra:CreateAccountResponse');

No comments:

Post a Comment

LinkWithin

Related Posts Plugin for WordPress, Blogger...

Popular Posts