栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP实现XML与数据格式进行转换类实例

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP实现XML与数据格式进行转换类实例

本文实例讲述了PHP实现XML与数据格式进行转换类。分享给大家供大家参考。具体如下:

 $val) {
 if ($priority == 'tag') $attributes_data[$attr] = $val;
 else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' 
      } 
    } 
    // See tag status and do the needed.
    if ($type == "open") { // The starting of the tag ''
      $parent[$level-1] = &$current;
      if (!is_array($current) or (!in_array($tag, array_keys($current)))) { // Insert New tag
 $current[$tag] = $result;
 if ($attributes_data) $current[$tag . '_attr'] = $attributes_data;
 $repeated_tag_index[$tag . '_' . $level] = 1;
 $current = &$current[$tag];
      } else { // There was another element with the same tag name
 if (isset($current[$tag][0])) { // If there is a 0th element it is already an array
   $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
   $repeated_tag_index[$tag . '_' . $level]++;
 } else { // This section will make the value an array if multiple tags with the same name appear together
   $current[$tag] = array($current[$tag], $result); //This will combine the existing item and the new item together to make an array 
   $repeated_tag_index[$tag . '_' . $level] = 2;
   if (isset($current[$tag . '_attr'])) { // The attribute of the last(0th) tag must be moved as well
     $current[$tag]['0_attr'] = $current[$tag . '_attr'];
     unset($current[$tag . '_attr']);
   } 
 } 
 $last_item_index = $repeated_tag_index[$tag . '_' . $level]-1;
 $current = &$current[$tag][$last_item_index];
      } 
    } elseif ($type == "complete") { // Tags that ends in 1 line ''
      // See if the key is already taken.
      if (!isset($current[$tag])) { // New Key
 $current[$tag] = $result;
 $repeated_tag_index[$tag . '_' . $level] = 1;
 if ($priority == 'tag' and $attributes_data) $current[$tag . '_attr'] = $attributes_data;
      } else { // If taken, put all things inside a list(array)
 if (isset($current[$tag][0]) and is_array($current[$tag])) { // If it is already an array...
   // ...push the new element into that array.
   $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
   if ($priority == 'tag' and $get_attributes and $attributes_data) {
     $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
   } 
   $repeated_tag_index[$tag . '_' . $level]++;
 } else { // If it is not an array...
   $current[$tag] = array($current[$tag], $result); //...Make it an array using using the existing value and the new value 
   $repeated_tag_index[$tag . '_' . $level] = 1;
   if ($priority == 'tag' and $get_attributes) {
     if (isset($current[$tag . '_attr'])) { // The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset($current[$tag . '_attr']);
     } 
     if ($attributes_data) {
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
     } 
   } 
   $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken 
 } 
      } 
    } elseif ($type == 'close') { // End of tag ''
      $current = &$parent[$level-1];
    } 
  } 
  return($xml_array);
} 
// Array to XML
class array2xml {
  public $output = "n";
  public $sub_item = array();
  public function __construct($array) {
    $sub_item = array();
    $this->output .= $this->xmlmake($array);
  } 
  public function xmlmake($array, $fk = '') {
    $xml = '';
    global $sub_item;
    foreach ($array as $key => $value) {
      if (is_array($value)) {
 if (is_numeric($key)) {
   $this->sub_item=array_merge($this->sub_item,array($fk));
   $xml .= "<{$fk}>" . $this->xmlmake($value, $key) . "";
 } else {
   $xml .= "<{$key}>" . $this->xmlmake($value, $key) . "";
 } 
      } else {
 $xml .= "<{$key}>{$value}n";
      } 
    } 
    return $xml;
  } 
  public function output(){
    foreach($this->sub_item as $t){
      $this->output = str_replace("<{$t}><{$t}>","<{$t}>",$this->output);
      $this->output = str_replace("","",$this->output);
    }
    return $this->output;
  }
}

希望本文所述对大家的php程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/44940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号