XML to Array

XML to Array

This class parses XML into an array:
array
(
[_name] => tag name (case sensitive)
[_attributes] => an array of ‘attribute’=>’value’
[_value] => node’s CDATA
[_children] => node’s children
)

<?php
/**
* ArrayFromXML
*
* @author Pawel Gasiorowski
* @copyright Copyright (c) 2005
* @access public
**/
class ArrayFromXML
{
var $parser;
var $iter = 0;
var $path = array();
var $xml = array();

/**
* ArrayFromXML::ArrayFromXML()
*
* @param string $XML
* @return
**/
function ArrayFromXML($XML)
{
$this->parser = xml_parser_create();

xml_set_object($this->parser, &$this);

xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);

xml_set_element_handler($this->parser, “hanleTagStart”, “hanleTagEnd”);
xml_set_character_data_handler($this->parser, “hanleTagCData”);

xml_parse($this->parser, $XML);
xml_parser_free($this->parser);

$this->xml = $this->xml[’_children’][0];
}

/**
* ArrayFromXML::getEvalPath()
*
* @return
**/
function getEvalPath()
{
return ‘$this->xml[’ . “‘” . implode(”‘][’”, $this->path) . “‘” . ‘]’;
}

/**
* ArrayFromXML::hanleTagStart()
*
* @param object $parser
* @param string $tag
* @param array $attributes
* @return
**/
function hanleTagStart($parser, $tag, $attributes)
{
array_push($this->path, ‘_children’);
array_push($this->path, ($this->iter++));

$e = $this->getEvalPath();
eval ($e . “[’_name’] = \$tag;”);
if ($attributes !== array())
{
eval ($e . “[’_attributes’] = \$attributes;”);
}
}

/**
* ArrayFromXML::hanleTagCData()
*
* @param object $parser
* @param string $cdata
* @return
**/
function hanleTagCData($parser, $cdata)
{
$e = $this->getEvalPath();
eval ($e . “[’_value’] = \$cdata;”);
}

/**
* ArrayFromXML::hanleTagEnd()
*
* @param object $parser
* @param string $cdata
* @return
**/
function hanleTagEnd($parser, $tag)
{
array_pop($this->path);
array_pop($this->path);
}
}

?>

Leave a Reply


All material @ copyrighted by chrisranjana.com. If you want to link to this article you are welcome to do so. Unauthorized publication is strictly prohibited. This developer tutorial website contains articles by Php programmers , Software developers, Mysql programmers and asp c# programmers. This website also contains ajax tutorials and advanced mysql sql stored procedures and functions tutorials and sample codes.