diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/XmlRpc/Generator/GeneratorAbstract.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/XmlRpc/Generator/GeneratorAbstract.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,150 @@ +_encoding = $encoding; + $this->_init(); + } + + /** + * Start XML element + * + * Method opens a new XML element with an element name and an optional value + * + * @param string $name XML tag name + * @param string $value Optional value of the XML tag + * @return Zend_XmlRpc_Generator_Abstract Fluent interface + */ + public function openElement($name, $value = null) + { + $this->_openElement($name); + if ($value !== null) { + $this->_writeTextData($value); + } + + return $this; + } + + /** + * End of an XML element + * + * Method marks the end of an XML element + * + * @param string $name XML tag name + * @return Zend_XmlRpc_Generator_Abstract Fluent interface + */ + public function closeElement($name) + { + $this->_closeElement($name); + + return $this; + } + + /** + * Return XML as a string + * + * @return string + */ + abstract public function saveXml(); + + /** + * Return encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Returns the XML as a string and flushes all internal buffers + * + * @return string + */ + public function flush() + { + $xml = $this->saveXml(); + $this->_init(); + return $xml; + } + + /** + * Returns XML without document declaration + * + * @return string + */ + public function __toString() + { + return $this->stripDeclaration($this->saveXml()); + } + + /** + * Removes XML declaration from a string + * + * @param string $xml + * @return string + */ + public function stripDeclaration($xml) + { + return preg_replace('/<\?xml version="1.0"( encoding="[^\"]*")?\?>\n/u', '', $xml); + } + + /** + * Start XML element + * + * @param string $name XML element name + */ + abstract protected function _openElement($name); + + /** + * Write XML text data into the currently opened XML element + * + * @param string $text + */ + abstract protected function _writeTextData($text); + + /** + * End XML element + * + * @param string $name + */ + abstract protected function _closeElement($name); +}