天天看點

php代碼實作xml格式轉換,PHP實作XML與資料格式進行轉換類執行個體

PHP實作XML與資料格式進行轉換類執行個體

來源:中文源碼網    浏覽: 次    日期:2018年9月2日

【下載下傳文檔:  PHP實作XML與資料格式進行轉換類執行個體.txt 】

(友情提示:右鍵點上行txt文檔名->目标另存為)

PHP實作XML與資料格式進行轉換類執行個體 本文執行個體講述了PHP實作XML與資料格式進行轉換類。分享給大家供大家參考。具體如下:

'

$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 .= "" . $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程式設計有所幫助。

親,試試微信掃碼分享本頁! *^_^*