Array2xml

08 May 2006 oleh paydjo

Beberapa waktu lalu Bojes sempat nanya, gimana parsing array menjadi xml. Gugling bentar nemu caranya. Gw lupa dari mana (males gugling lagi), tapi suwer ini hasil gugling dimodif dikit.

<?php
	
function array_to_xml($array, $root, $level=1) {
        $xml = '';
    if ($level==1) {
        $xml .= ''.
                \"\n<\".$root.\">\n\";
    }
    foreach ($array as $key=>$value) {
        $key = strtolower($key);
        if (is_array($value)) {
            $multi_tags = false;
            foreach($value as $key2=>$value2) {
                if (is_array($value2)) {
                    $xml .= str_repeat(\"\t\",$level).\"<$key>\n\";
                    $xml .= array_to_xml($value2, $root, $level+1);
                    $xml .= str_repeat(\"\t\",$level).\"\n\";
                    $multi_tags = true;
                } else {
                    if (trim($value2)!='') {
                        if (htmlspecialchars($value2)!=$value2) {
                            $xml .= str_repeat(\"\t\",$level).
                                    \"<$key>\n\";
                        } else {
                            $xml .= str_repeat(\"\t\",$level).
                                    \"<$key>$value2\n\";
                        }
                    }
                    $multi_tags = true;
                }
            }
            if (!$multi_tags and count($value)>0) {
                $xml .= str_repeat(\"\t\",$level).\"<$key>\n\";
                $xml .= array_to_xml($value, $root, $level+1);
                $xml .= str_repeat(\"\t\",$level).\"\n\";
            }
        } else {
            if (trim($value)!='') {
                if (htmlspecialchars($value)!=$value) {
                    $xml .= str_repeat(\"\t\",$level).\"<$key>\".
                            \"\n\";
                } else {
                    $xml .= str_repeat(\"\t\",$level).
                            \"<$key>$value\n\";
                }
            }
        }
    }
    if ($level==1) {
        $xml .= \"\n\";
    }
    return $xml;
}
	
?>

Cara makenya tinggal panggil kok :D
jika pengin browser langsung mengenali sebagai file xml, kirim aja header.

<?php
	
include \"array2xml.php\";
	
$data = array('file'=>array('myfile',
                            'yourfile'),
             'user'=>array(array('name'=>'Foo', 'test' =>'asdf'),
                           array('bar'=>'Bar')),
             'time'=>array('day'=>'tuesday',
                           'week'=>23));
	
header('Content-type: text/xml');
echo array_to_xml($data, 'data');
	
?>

Popularity: 4% [?]

Artikel terkait:
  • No related posts

Tulisan ini belum mendapat komentar ... jadilah yang pertama.

Tinggalkan Komentar

sembadra