コード例 #1
0
 /**
  * Recursively walk through the element tree and write elements to the
  * XMLWriter instance.
  * 
  * @param XMLWriter $writer
  * @param Polycast_XmlRpc_Generator_Element $element
  * @return void
  */
 protected function _generateXml(XMLWriter $writer, Polycast_XmlRpc_Generator_Element $element)
 {
     $writer->startElement($element->getName());
     foreach ($element->getChildren() as $child) {
         if ($child instanceof Polycast_XmlRpc_Generator_Element) {
             /* @var $child Polycast_XmlRpc_Generator_Element */
             $this->_generateXml($writer, $child);
         } elseif ($child instanceof Polycast_XmlRpc_Value) {
             /* @var $child Polycast_XmlRpc_Value */
             $writer->writeRaw($child->saveXml());
         } else {
             $writer->text($child);
         }
     }
     $writer->endElement();
 }
コード例 #2
0
ファイル: Struct.php プロジェクト: polycaster/Polycast_XmlRpc
 /**
  * Return the XML code that represent struct native MXL-RPC value
  *
  * @return string
  */
 public function saveXML()
 {
     if (!$this->_as_xml) {
         // The XML code was not calculated yet
         $generator = $this->getGenerator();
         // assemble envelope
         $element = new Polycast_XmlRpc_Generator_Element('value', array($struct = new Polycast_XmlRpc_Generator_Element('struct')));
         // assemble members
         if (is_array($this->_value)) {
             foreach ($this->_value as $name => $val) {
                 /* @var $val Polycast_XmlRpc_Value */
                 $struct->appendChild(new Polycast_XmlRpc_Generator_Element('member', array(new Polycast_XmlRpc_Generator_Element('name', array($name)), $val)));
             }
         }
         $this->_as_xml = $this->_stripXmlDeclaration($generator->generateXml($element));
     }
     return $this->_as_xml;
 }
コード例 #3
0
 /**
  * Builds the document recursively.
  * 
  * @param DOMDocument $dom
  * @param Polycast_XmlRpc_Generator_Element $element
  * @param DOMElement $rootNode
  * @return void
  */
 protected function _generateXml(DOMDocument $dom, Polycast_XmlRpc_Generator_Element $element, DOMElement $rootNode = null)
 {
     $node = $dom->createElement($element->getName());
     if (is_null($rootNode)) {
         $dom->appendChild($node);
     } else {
         $rootNode->appendChild($node);
     }
     foreach ($element->getChildren() as $child) {
         if ($child instanceof Polycast_XmlRpc_Generator_Element) {
             /* @var $child Polycast_XmlRpc_Generator_Element */
             $this->_generateXml($dom, $child, $node);
         } elseif ($child instanceof Polycast_XmlRpc_Value) {
             /* @var $child Polycast_XmlRpc_Value */
             $importNode = new DOMDocument();
             $importNode->loadXML($child->saveXML());
             $node->appendChild($dom->importNode($importNode->documentElement, true));
         } else {
             $node->appendChild($dom->createTextNode($child));
         }
     }
 }
コード例 #4
0
 /**
  * Create XML request
  *
  * @return string
  */
 public function saveXML()
 {
     $args = $this->_getXmlRpcParams();
     $method = $this->getMethod();
     $generator = Polycast_XmlRpc_Value::getGenerator();
     $element = new Polycast_XmlRpc_Generator_Element('methodCall', array(new Polycast_XmlRpc_Generator_Element('methodName', array($method))));
     if (is_array($args) && count($args)) {
         $params = new Polycast_XmlRpc_Generator_Element('params');
         $element->appendChild($params);
         foreach ($args as $arg) {
             /* @var $arg Polycast_XmlRpc_Value */
             $params->appendChild(new Polycast_XmlRpc_Generator_Element('param', array($arg)));
         }
     }
     return $generator->generateXml($element);
 }