有用的函数-xml处理

来源:互联网 发布:js 深度克隆 编辑:程序博客网 时间:2024/06/08 02:58

有用的函数-xml处理

1.xmltoarray
  1. function XMLToArray($xml) 

  2.   if ($xml instanceof SimpleXMLElement) { 
  3.    $children = $xml->children(); 
  4.    $return = null; 
  5.   } 
  6.   
  7.   foreach ($children as $element => $value) { 
  8.    if ($value instanceof SimpleXMLElement) { 
  9.      $values = (array)$value->children(); 
  10.      
  11.      if (count($values) > 0) { 
  12.        $return[$element] = XMLToArray($value); 
  13.      } else { 
  14.        if (!isset($return[$element])) { 
  15.          $return[$element] = (string)$value; 
  16.        } else { 
  17.          if (!is_array($return[$element])) { 
  18.            $return[$element] = array($return[$element], (string)$value); 
  19.          } else { 
  20.            $return[$element][] = (string)$value; 
  21.          } 
  22.        } 
  23.      } 
  24.    } 
  25.   } 
  26.   
  27.   if (is_array($return)) { 
  28.    return $return; 
  29.   } else { 
  30.    return $false; 
  31.   } 
  32. }
复制代码
2.array to xml (这个没验证过,网上摘抄的,谁有机会验证一下)
  1. $elementLevel = 0 ; 
  2. function array_Xml($array, $keys = '') 

  3. global $elementLevel; 
  4. if(!is_array($array)) 

  5.    if($keys == ''){ 
  6.     return $array; 
  7.    }else{ 
  8.     return "\n<$keys>" . $array . "</$keys>"; 
  9.    } 
  10. }else{ 
  11.    foreach ($array as $key => $value) 
  12.    { 
  13.     $haveTag = true; 
  14.     if (is_numeric($key)) 
  15.     { 
  16.      $key = $keys; 
  17.      $haveTag = false; 
  18.     } 
  19.     /** 
  20.     * The first element 
  21.     */ 
  22.     if($elementLevel == 0 ) 
  23.     { 
  24.      $startElement = "<$key>"; 
  25.      $endElement = "</$key>"; 
  26.     } 
  27.     $text .= $startElement."\n"; 
  28.     /** 
  29.     * Other elements 
  30.     */ 
  31.     if(!$haveTag) 
  32.     { 
  33.      $elementLevel++; 
  34.      $text .= "<$key>" . array_Xml($value, $key). "</$key>\n"; 
  35.     }else{ 
  36.      $elementLevel++; 
  37.      $text .= array_Xml($value, $key); 
  38.     } 
  39.     $text .= $endElement."\n"; 
  40.    } 

  41. return $text; 
  42. }
复制代码
原创粉丝点击