Zend - The PHP Company




XML

Add Code


XML to Heirarchal Array  

Type: code fragment
Added by: hashish101
Entered: 06/03/2005
Last modified: 03/12/2004
Rating: - (fewer than 3 votes)
Views: 4082
very simple function that allows you to pass in the result of PHP4's xml_parse_into_struct() function and makes it a hierarchal array. the "subtree" sub array contains the xml tags within the parent array.


<?php
function GetSubTree(&$array,$level=1) {
  
$i=0;
  
$tree = array();
  foreach (
$array as $key=>$value) {
    if (
$value["type"] == "close") {
      unset(
$array[$key]);
    }
    else if (
$value["level"] == $level) {
      
$tree[$i] = $value;
      
$i++;
      unset(
$array[$key]);
    }
    else if (
$value["level"] > $level) {
      
$tree[$i-1]["subtree"] = array();
      
$tree[$i-1]["subtree"] = GetSubTree($array,$level+1);
    }
    else if (
$value["level"] < $level) { break; }
  }
  return 
$tree;
}
?>


Usage Example


$url = "test2.xml"; //URL of the XML FEED

$contents = file_get_contents($url);

$data = GetXMLTree($contents);
//var_dump($data);
//print"<hr>";
$array = GetSubTree($data);
var_dump($array);

function GetXMLTree ($xmldata)
{
    // we want to know if an error occurs
    ini_set ('track_errors', '1');

    $xmlreaderror = false;

    $parser = xml_parser_create ('ISO-8859-1');
    xml_parser_set_option ($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parser_set_option ($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parse_into_struct ($parser, $xmldata, $vals, $index);
    xml_parser_free ($parser);
  return $vals;
}


Rate This Script





Search



This Category All Categories