AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Преобразование XML в массив

Для преобразования XML в массив можно использовать следующую функцию:

function xml_to_array($XML)
{
$XML = trim($XML);
$returnVal = $XML;

// Expand empty tags
$emptyTag = '<(.*)/>';
$fullTag = '<\\1></\\1>';
$XML = preg_replace ("|$emptyTag|", $fullTag, $XML);

$matches = [];
if (preg_match_all('|<(.*)>(.*)</\\1>|Ums', trim($XML), $matches))
{
	// Если есть элементы, тогда вернуть массив, иначе текст
	if (count($matches[1]) > 0) $returnVal = [];
	foreach ($matches[1] as $index => $outerXML)
	{
		$attribute = $outerXML;
		$value = xml_to_array($matches[2][$index]);
		if (! isset($returnVal[$attribute])) $returnVal[$attribute] = [];
			$returnVal[$attribute][] = $value;
	}
}
// Bring un-indexed singular arrays to a non-array value.
if (is_array($returnVal)) foreach ($returnVal as $key => $value)
{
	if (is_array($value) && count($value) == 1 && key($value) === 0)
	{
		$returnVal[$key] = $returnVal[$key][0];
	}
}
return $returnVal;
}

.

© Copyright 2008-2017 by KDG