Heim >Backend-Entwicklung >PHP-Tutorial >转换XML和数组

转换XML和数组

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-29 09:08:191080Durchsuche

两个方法 递归转换 数组和xml

<?php /*simplexml数组和xml转换*/



// 对象转数组:为了更好地找到需要的节点
function toarray($sim){
	// 1 先把最外面的object变成数组
	$sim=(array)$sim;
	//如果是对象或者数组,就都递归,运用上面的转变,如果不是这两者之一就pass
	foreach ($sim as $k => $v) {
		if ($v instanceof simplexmlelement||is_array($v)) {
			$sim[$k]=toarray($v);
		}
	}	
	return $sim;
}
$sx=simplexml_load_file('./try.xml');
print_r($sx);
print_r(toarray($sx));
// 看源代码可以看到,网页返回是报错






$arr=array('a'=>'111',
		'b'=>'2222',
		'c'=>array(
			'd'=>'hahaha',
			'e'=>array(
				'what'=>'the x')));

// 数组转xml,新的数组加入到新xml里,,arr to xml
function toxml($arr,$node=null){
	// 创建新xml文件
	if ($node==null) {
	$simxml=new simpleXMLElement ('<?xml version="1.0" encoding="utf-8"?><root></root>');
	}else{
		$simxml=$node;
	}
	// 
	foreach ($arr as $k => $v) {
		if (is_array($v)) {
			// addChild(节点名,内容)
			// 如果是数组,就要建节点 把这个数组里的东西放进去--》v是个数组,
			// 大节点名是k,到下一回,把东西放进这个sim-》addchild里
			toxml($v,$simxml->addChild($k));

			//如果数组键是数字,就要自己给他个标签名,因为直接用数字 会出问题
		}else if (is_numeric($k)) {
			$simxml->addChild('item',$v);	

		}else{
			// 不是数组就直接添加子元素 键名-键值
			$simxml->addChild($k,$v);
		}
	}	
	return $simxml->saveXML();
}

header('content-type:text/xml');
echo toxml($arr);

?>

以上就介绍了转换XML和数组,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn