PHP Classes
Icontem

File: xml.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Ahmed Magdy  >  XML_Array  >  xml.php  
File: xml.php
Role: Class source
Content type: text/plain
Description: XML to Array class file
Class: XML_Array
Store and retrieve arrays in XML documents
 

Contents

Class file image Download
<?
/**
@file xml.php
@class XML.
XML Parser class.
This class changes php arrays into xml text and vice versa.
*/
final class XML  
{
//-------------------------------------------------------------------
    /**
    XML to Array.
    Converts the XML text that was generated by this class to an array.
    It can work with unidimensional and multidimensional associative arrays.
    @param arg_str_xml The xml text to be changed into an array.
    @return Array.
    @see prv_xml_to_array().
    */
    
public function xml_to_array($arg_str_xml)
    {
        
$parser xml_parser_create();
        
xml_parse_into_struct($parser$arg_str_xml$arr_raw_xml);
        
$arr_out = array();
        
$this->prv_xml_to_array($arr_raw_xml$arr_out);
        return 
$arr_out;
    }    
// end function xml_to_array
//-----------------------------------------------------------------------------    
    /**
    Private XML to Array.
    Converts xml to array recursively.
    @param arg_tags the raw array of tags got from xml_parse_into_struct is passed by reference to keep the position of the pointer in the array through function calls.
    @param arg_current_tag the current array to be filled is passed by reference because it is changed within the function.
    @return Array.
    */
    
private function prv_xml_to_array(&$arg_tags, &$arg_current_tag)
    {
        while(list(, 
$arr_tag) = each($arg_tags))
        {
            if(
$arr_tag['level'] > 1)
            {
                if (
$arr_tag['type']=="complete")         // if type = complete
                
{        
                    
$arg_current_tag[$arr_tag['attributes']['KEY']] = $arr_tag['value'];
                } 
                elseif (
$arr_tag['type']=="open")        // if type = open
                
{
                    
$this->prv_xml_to_array($arg_tags$arg_current_tag[$arr_tag['attributes']['KEY']]);
                } 
                elseif (
$arr_tag['type']=="close")        // if type = close
                
{
                    return;
                }    
// end if type
            
}    // end if level > 1
        
}    // end while arg_tags        
    
}    // end function prv_xml_to_array
//-------------------------------------------------------------------
    /**
    Sets padding in xml text.
    Helps to make the xmlcode readable but can be disabled by emptying arg_str_pad when we do not need to read the xml code.
    @param arg_int_pad_number the number of indentation pads in this tag.
    @param arg_str_pad the single pad size.
    @return String pad.
    */
    
private function pad($arg_int_pad_number=0$arg_str_pad="")
    {
        if((
$arg_int_pad_number===0) || ($arg_str_pad===""))return "";
        
$i 0;
        
$str_pad "";
        while(
$i $arg_int_pad_number){
            
$str_pad .= $arg_str_pad;
            
$i++;
        }
        return (
$str_pad "\n" $str_pad "");
    }    
// end function pad
//-------------------------------------------------------------------
    /**
    Private Array to XML.
    changes php arrays into xml text recursively.
    @param arg_arr_array the array to be changed into XML.
    @param arg_int_pad_number the number of pads of the current tag.
    @param arg_str_pad the indentation pad text.
    @return String xml text.
    @see array_to_xml().
    */
    
private function prv_array_to_xml($arg_arr_array$arg_int_pad_number=0$arg_str_pad="")
    {
        
//print $arg_int_pad_number;
        
$str_xml "";
        while(list(
$k$v) = each($arg_arr_array)){
            
$str_xml .= $this->pad($arg_int_pad_number$arg_str_pad) . "<a key=\"" htmlspecialchars($k) . "\">";
            if(
is_array($v)){
                
$str_xml .= $this->prv_array_to_xml($v$arg_int_pad_number+1$arg_str_pad);
            }else{
                
$str_xml .= $this->pad($arg_int_pad_number+1$arg_str_pad) . htmlspecialchars($v);
            }
            
$str_xml .= $this->pad($arg_int_pad_number$arg_str_pad) . "</a>";
        }
        return 
$str_xml;
    }    
// end function prv_array_to_xml
//-------------------------------------------------------------------
    /** 
    Array to XML.
    changes php arrays into xml text recursively.
    @param arg_arr_array the array to be changed into XML.
    @param arg_str_operation_name the name of the main xml tag.
    @param arg_str_pad the indentation pad text.
    @return String xml text.
    @see prv_array_to_xml
    */
    
public function array_to_xml($arg_arr_array$arg_str_operation_name="response"$arg_str_pad="")
    {
        if(!
is_array($arg_arr_array))return false;
        
$str_xml "<$arg_str_operation_name>";
        
$str_xml .= $this->prv_array_to_xml($arg_arr_array1$arg_str_pad);
        
$str_xml .= ($arg_str_pad==="" "" "\n") . "</$arg_str_operation_name>";
        return 
$str_xml;
    }    
// end function array_to_xml
//-------------------------------------------------------------------
// end of class XML
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products