• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/xmldocument.php
  • Класс: specifierCDavXmlDocument
  • Вызов: CDavXmlDocument::LoadFromStringRecursive
static function LoadFromStringRecursive(&$xmlDocument, $arData, &$startFrom)
{
	$result = array();

	while (isset($arData[$startFrom]))
	{
		$tagdata = $arData[$startFrom++];
		if (!isset($tagdata) || !isset($tagdata['tag']) || !isset($tagdata['type']))
			break;
		if ($tagdata['type'] == "close")
			break;
		$attributes = (isset($tagdata['attributes']) ? $tagdata['attributes'] : false);
		if ($tagdata['type'] == "open")
		{
			$subtree = self::LoadFromStringRecursive($xmlDocument, $arData, $startFrom);
			$result[] = $xmlDocument->CreateNewNode($tagdata['tag'], $subtree, $attributes);
		}
		elseif ($tagdata['type'] == "complete")
		{
			$value = (isset($tagdata['value']) ? $tagdata['value'] : false);
			$result[] = $xmlDocument->CreateNewNode($tagdata['tag'], $value, $attributes);
		}
	}

	if (count($result) == 1 )
		return $result[0];

	return $result;
}