您好,欢迎访问一九零五行业门户网

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

这篇文章主要介绍了php实现xml与数据格式进行转换类,实例分析了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 nameif (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 xmlclass 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 .= . $this->xmlmake($value, $key) . {$fk}>;} else {$xml .= . $this->xmlmake($value, $key) . {$key}>;}} else {$xml .= {$value}{$key}>\n;}}return $xml; }public function output(){foreach($this->sub_item as $t){$this->output = str_replace(,,$this->output);$this->output = str_replace({$t}>{$t}>,{$t}>,$this->output);}return $this->output; }}
希望本文所述对大家的php程序设计有所帮助。
,
其它类似信息

推荐信息