/**
  * Convert XML object to string.
  *
  * @param   \SimpleXMLElement|\DOMDocument|string  $data  XML object or data.
  *
  * @return  string  Converted XML string.
  */
 protected function toString($data)
 {
     if ($data instanceof \SimpleXMLElement) {
         return $data->asXML();
     } elseif ($data instanceof \DOMDocument) {
         return $data->saveXML();
     } elseif (is_string($data)) {
         return $data;
     }
     throw new \InvalidArgumentException(sprintf('Invalid XML content type, %s provided.', gettype($data)));
 }
Example #2
0
 /**
  * Convert anything DOMDocument|SimpleXMLElement|string to DOMDocument.
  *
  * @param \DOMDocument|\SimpleXMLElement|string $xml String may be filename or xml string
  *
  * @throws \InvalidArgumentException
  * @return \DOMDocument
  */
 public static function toDOMDocument($xml)
 {
     if ($xml instanceof \DOMDocument) {
         return $xml;
     }
     if ($xml instanceof \SimpleXMLElement) {
         $doc = new \DOMDocument();
         $doc->loadXML('' . $xml->asXML());
         return $doc;
     }
     if (is_string($xml)) {
         $doc = new \DOMDocument();
         if (is_file($xml)) {
             $doc->load($xml);
             return $doc;
         }
         $doc->loadXML($xml);
         return $doc;
     }
     $type = is_object($xml) ? get_class($xml) : gettype($xml);
     throw new \InvalidArgumentException("Cannot convert instance of '{$type}' to DOMDocument");
 }
Example #3
0
 /**
  * Set request
  *
  * $request may be any of:
  * - DOMDocument; if so, then cast to XML
  * - DOMNode; if so, then grab owner document and cast to XML
  * - SimpleXMLElement; if so, then cast to XML
  * - stdClass; if so, calls __toString() and verifies XML
  * - string; if so, verifies XML
  *
  * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request
  * @return Zend_Soap_Server
  */
 private function _setRequest($request)
 {
     if ($request instanceof DOMDocument) {
         $xml = $request->saveXML();
     } elseif ($request instanceof DOMNode) {
         $xml = $request->ownerDocument->saveXML();
     } elseif ($request instanceof SimpleXMLElement) {
         $xml = $request->asXML();
     } elseif (is_object($request) || is_string($request)) {
         if (is_object($request)) {
             $xml = $request->__toString();
         } else {
             $xml = $request;
         }
         $dom = new DOMDocument();
         if (strlen($xml) == 0 || !$dom->loadXML($xml)) {
             throw new Zend_Soap_Server_Exception('Invalid XML');
         }
     }
     $this->_request = $xml;
     return $this;
 }
 /**
  * Set request
  *
  * $request may be any of:
  * - DOMDocument; if so, then cast to XML
  * - DOMNode; if so, then grab owner document and cast to XML
  * - SimpleXMLElement; if so, then cast to XML
  * - stdClass; if so, calls __toString() and verifies XML
  * - string; if so, verifies XML
  *
  * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request
  * @return Zend_Soap_Server
  */
 protected function _setRequest($request)
 {
     if ($request instanceof DOMDocument) {
         $xml = $request->saveXML();
     } elseif ($request instanceof DOMNode) {
         $xml = $request->ownerDocument->saveXML();
     } elseif ($request instanceof SimpleXMLElement) {
         $xml = $request->asXML();
     } elseif (is_object($request) || is_string($request)) {
         if (is_object($request)) {
             $xml = $request->__toString();
         } else {
             $xml = $request;
         }
         $dom = new DOMDocument();
         try {
             if (strlen($xml) == 0 || !($dom = Zend_Xml_Security::scan($xml, $dom))) {
                 #require_once 'Zend/Soap/Server/Exception.php';
                 throw new Zend_Soap_Server_Exception('Invalid XML');
             }
         } catch (Zend_Xml_Exception $e) {
             #require_once 'Zend/Soap/Server/Exception.php';
             throw new Zend_Soap_Server_Exception($e->getMessage());
         }
     }
     $this->_request = $xml;
     return $this;
 }
Example #5
0
 /**
  * Set request
  *
  * $request may be any of:
  * - DOMDocument; if so, then cast to XML
  * - DOMNode; if so, then grab owner document and cast to XML
  * - SimpleXMLElement; if so, then cast to XML
  * - stdClass; if so, calls __toString() and verifies XML
  * - string; if so, verifies XML
  *
  * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request
  * @return \Zend\Soap\Server
  */
 protected function _setRequest($request)
 {
     if ($request instanceof \DOMDocument) {
         $xml = $request->saveXML();
     } elseif ($request instanceof \DOMNode) {
         $xml = $request->ownerDocument->saveXML();
     } elseif ($request instanceof \SimpleXMLElement) {
         $xml = $request->asXML();
     } elseif (is_object($request) || is_string($request)) {
         if (is_object($request)) {
             $xml = $request->__toString();
         } else {
             $xml = $request;
         }
         $dom = new \DOMDocument();
         if (strlen($xml) == 0 || !$dom->loadXML($xml)) {
             throw new Exception\InvalidArgumentException('Invalid XML');
         }
     }
     $this->_request = $xml;
     return $this;
 }
Example #6
0
 /**
  * Set request
  *
  * $request may be any of:
  * - DOMDocument; if so, then cast to XML
  * - DOMNode; if so, then grab owner document and cast to XML
  * - SimpleXMLElement; if so, then cast to XML
  * - stdClass; if so, calls __toString() and verifies XML
  * - string; if so, verifies XML
  *
  * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request
  * @return Zend_Soap_Server
  */
 protected function _setRequest($request)
 {
     if ($request instanceof DOMDocument) {
         $xml = $request->saveXML();
     } elseif ($request instanceof DOMNode) {
         $xml = $request->ownerDocument->saveXML();
     } elseif ($request instanceof SimpleXMLElement) {
         $xml = $request->asXML();
     } elseif (is_object($request) || is_string($request)) {
         if (is_object($request)) {
             $xml = $request->__toString();
         } else {
             $xml = $request;
         }
         libxml_disable_entity_loader(true);
         $dom = new DOMDocument();
         if (strlen($xml) == 0 || !$dom->loadXML($xml)) {
             require_once 'Zend/Soap/Server/Exception.php';
             throw new Zend_Soap_Server_Exception('Invalid XML');
         }
         foreach ($dom->childNodes as $child) {
             if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) {
                 require_once 'Zend/Soap/Server/Exception.php';
                 throw new Zend_Soap_Server_Exception('Invalid XML: Detected use of illegal DOCTYPE');
             }
         }
         libxml_disable_entity_loader(false);
     }
     $this->_request = $xml;
     return $this;
 }
Example #7
0
 /**
  * Set request
  *
  * $request may be any of:
  * - DOMDocument; if so, then cast to XML
  * - DOMNode; if so, then grab owner document and cast to XML
  * - SimpleXMLElement; if so, then cast to XML
  * - stdClass; if so, calls __toString() and verifies XML
  * - string; if so, verifies XML
  *
  * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request
  * @return Zend_Soap_Server
  */
 protected function _setRequest($request)
 {
     if ($request instanceof DOMDocument) {
         $xml = $request->saveXML();
     } elseif ($request instanceof DOMNode) {
         $xml = $request->ownerDocument->saveXML();
     } elseif ($request instanceof SimpleXMLElement) {
         $xml = $request->asXML();
     } elseif (is_object($request) || is_string($request)) {
         if (is_object($request)) {
             $xml = $request->__toString();
         } else {
             $xml = $request;
         }
         $dom = new DOMDocument();
         if (strlen($xml) == 0 || !$dom->loadXML($xml)) {
             require_once PHP_LIBRARY_PATH . 'Zend/Soap/Server/Exception.php';
             throw new Zend_Soap_Server_Exception('Invalid XML');
         }
     }
     $this->_request = $xml;
     return $this;
 }