dev-lang

XMLWriter

검은바람 2014. 7. 10. 17:14
반응형

<?php
// Simon Willison, 16th April 2003
// Based on Lars Marius Garshol's Python XMLWriter class
// See http://www.xml.com/pub/a/2003/04/09/py-xml.html
 
class XmlWriter {
    var $xml;
    var $indent;
    var $stack = array();
    function XmlWriter($indent = '  ') {
        $this->indent = $indent;
        $this->xml = '<?xml version="1.0" encoding="utf-8"?>'."\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).'</'.$element.'>'."\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 .= "</$element>\n";
    }
    function getXml() {
        return $this->xml;
    }
}
 
 
 
$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('food'$animal[1]);
    $xml->element('name'$animal[2]);
    $xml->pop();
}
$xml->pop();
 
print $xml->getXml();
 
 
?>


반응형