<?php
class XmlElement
{
var $name;
var $attributes;
var $content;
var $children;
};
class xml
{
function __construct()
{
if (!$this->required_functions())
{
}
$this->result=false;
}
private function required_functions()
{
$result = true;
$essential = array('xml_parser_create','xml_parser_set_option', 'xml_parse_into_struct', 'xml_parser_free');
foreach ($essential as $name)
{
{
$result = false;
trigger_error('xml error - this class need some functions like '.$name,E_USER_WARNING);
}
}
if (!$result)
{
}
return $result;
}
public function xml_code_to_object($xml)
{
// Template: http://www.php.net/manual/de/function.xml-parse-into-struct.php#66487
// Changed for usage in ViaThinkSoft Personal WebBase
foreach ($tags as $tag)
{
$index = count($elements);
if ($tag['type'] == "complete" || $tag['type'] == "open")
{
$elements[$index] = new XmlElement;
$elements[$index]->name = $tag['tag'];
if ((isset($tag['attributes'])) && ($tag['attributes'] != ''))
{
foreach ($tag['attributes'] as $m1 => $m2)
{
$elements[$index]->attributes[$m1] = $this->xml_unescape($tag['attributes'][$m1]);
}
}
else
{
$elements[$index]->attributes = array();
}
if (isset($tag['value']))
{
$elements[$index]->content = $this->xml_unescape($tag['value']);
}
if ($tag['type'] == "open")
{
$elements[$index]->children = array();
$stack[count($stack)] = &$elements;
$elements = &$elements[$index]->children;
}
}
if ($tag['type'] == "close")
{
$elements = &$stack[count($stack) - 1];
}
}// echo $xml;
//print_r($elements);
return $elements[0];
}
public function xml_file_to_object($filename)
{
// Daniel Marschall
return $this->xml_code_to_object($xml);
}
private function xml_escape($input)
{
// Daniel Marschall
return $input;
}
private function xml_unescape($input)
{
// Daniel Marschall
return $input;
}
private function recursive_xml_build($cu, $level = 0)
{
// Daniel Marschall
if (count($cu->attributes) > 0)
{
foreach ($cu->attributes as $m1 => $m2)
{
$code .= ' '.$m1.'="'.$this->xml_escape($m2).'"';
}
}
if (($cu->content == '') && (count($cu->children) == 0))
{
$code .= ' /';
}
else
{
$code .= '>';
if ($cu->content != '')
{
$code .= $this->xml_escape($cu->content);
}
if (count($cu->children) > 0)
{
$code .= "\r\n";
foreach ($cu->children as $n1 => $n2)
{
$code .= $this->{__FUNCTION__}($n2, $level+1);
}
}
$code .= '</'.$cu->name;
}
$code .= ">\r\n";
return $code;
}
public function object_to_xml_code($object)
{
// Daniel Marschall
$code = '<?xml version="1.0" encoding="utf8"?>'."\r\n\r\n";
$code .= $this->recursive_xml_build($object);
return $code;
}
public function object_to_xml_file($object, $filename)
{
// Daniel Marschall
{
$text = $this->recursive_xml_build($object);
if ($handler = @fopen($filename, 'w'))
{
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
}
}
?>