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

转换XML和数组

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-07-29 09:08:19
Original
1079 Leute haben es durchsucht

两个方法 递归转换 数组和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);

?>
Nach dem Login kopieren

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

Verwandte Etiketten:
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage