rendered paste body<?php class XML extends XML_Node { var $_version = '1.0'; var $_encoding = 'ISO-8859-1'; var $_stylesheet = array('href' => '', 'type' => ''); function XML($rootName, $attributes = array(), $encoding = 'ISO-8859-1') { $this->XML_Node($rootName, $attributes); $this->setEncoding($encoding); } function setEncoding($encoding) { $this->_encoding = $encoding; } function setVersion($version) { $this->_version = $version; } function setStylesheet($href, $type = 'text/xsl') { $this->_stylesheet['href'] = $href; $this->_stylesheet['type'] = $type; } function output($return = false) { if ($return) { $data = <<<XML<?xml version="{$this->_version}" encoding="{$this->_encoding}"?><?xml-stylesheet type="{$this->_stylesheet['type']}" href="{$this->_stylesheet['href']}"?>XML; $this->compile(); $data .= $this->getXML(); } else { header('Content-Type: text/xml; charset: ' . $this->_encoding); print <<<XML<?xml version="{$this->_version}" encoding="{$this->_encoding}"?><?xml-stylesheet type="{$this->_stylesheet['type']}" href="{$this->_stylesheet['href']}"?>XML; $this->compile(); print $this->getXML(); } } } class XML_Node { var $_innerXML; var $_name; var $_data; var $_childs = array(); var $_attributes = array(); var $_text_nodes = array(); function XML_Node($name, $attributes = array(), $data = '') { $this->_name = $name; $this->_data = $data; if (sizeof($attributes) > 0) { foreach($attributes as $name => $value) { $this->addAttribute($name, $value); } } } function setData($data) { $this->_data = $data; } function addAttribute($name, $value) { $this->_attributes[$name] = str_replace('"', '\"', $value); } function appendChild($node) { $this->_childs[] = $node; } function compile() { if (sizeof($this->_childs) > 0) { for($i = 0; $i < sizeof($this->_childs); $i++) { $this->_childs[$i]->compile(); $this->_innerXML .= $this->_childs[$i]->getXML(); } } } function getXML() { $xml = '<' . $this->_name; if (sizeof($this->_attributes) > 0) { foreach($this->_attributes as $key => $value) { $xml .= ' ' . $key . '="' . $value . '"'; } } $xml .= '>'; $hasChilds = (sizeof($this->_childs) > 0); if ($hasChilds) { $xml .= "\n"; $xml .= $this->_innerXML; } else { $xml .= $this->_data; } $xml .= '</' . $this->_name . '>' . "\n"; return $xml; } function appendArray($name, $array) { if (sizeof($array) > 0) { foreach($array as $entry) { $node = new XML_Node($name); if (sizeof($entry) > 0) { foreach($entry as $field_name => $field_value) { $node->appendChild(new XML_Text_Node($field_name, $field_value)); } } $this->appendChild($node); } } } } class XML_Text_Node extends XML_Node { function XML_Text_Node($name, $value) { $this->XML_Node($name, array(), $value); } }?>