indent = $indent; $this->xml = ''."\n"; } function _indent() { for ($i = 0, $j = count($this->stack); $i < $j; $i++) { $this->xml .= $this->indent; } } function push($element, $attributes = array()) { $this->_indent(); $this->xml .= '<'.$element; foreach ($attributes as $key => $value) { $this->xml .= ' '.$key.'="'.htmlentities($value).'"'; } $this->xml .= ">\n"; $this->stack[] = $element; } function element($element, $content, $attributes = array()) { $this->_indent(); $this->xml .= '<'.$element; foreach ($attributes as $key => $value) { $this->xml .= ' '.$key.'="'.htmlentities($value).'"'; } $this->xml .= '>'.htmlentities($content).''."\n"; } function emptyelement($element, $attributes = array()) { $this->_indent(); $this->xml .= '<'.$element; foreach ($attributes as $key => $value) { $this->xml .= ' '.$key.'="'.htmlentities($value).'"'; } $this->xml .= " />\n"; } function pop() { $element = array_pop($this->stack); $this->_indent(); $this->xml .= "\n"; } function getXml() { return $this->xml; } } /* Test $xml = new XmlWriter(); $array = array( array('monkey', 'banana', 'Jim'), array('hamster', 'apples', 'Kola'), array('turtle', 'beans', 'Berty'), ); $xml->push('zoo'); foreach ($array as $animal) { $xml->push('animal', array('species' => $animal[0])); $xml->element('name', $animal[2]); $xml->element('food', $animal[1]); $xml->pop(); } $xml->pop(); print $xml->getXml(); */ ?>