• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/phonenumber/tools/xmlparser.php
  • Класс: BitrixMainPhoneNumberToolsXmlParser
  • Вызов: XmlParser::walkDomTree
protected function walkDomTree(XMLReader $xmlReader, $parentPath)
{
	$path = $parentPath . $xmlReader->localName . '/';
	$field = $this->getField($path);

	if(!is_null($field))
	{
		if ($field->isMultiple())
		{
			$this->properties[$field->getName()][] = $this->getElementValue($xmlReader, $parentPath, $field);
		}
		else
		{
			$this->properties[$field->getName()] = $this->getElementValue($xmlReader, $parentPath, $field);
		}

		// if element was parsed by subParser, XMLReader cursor will be moved to the end of the current element
		// and thus we should exit current level of recursion.
		if($xmlReader->nodeType == XMLReader::END_ELEMENT)
			return;
	}

	if($xmlReader->nodeType == XMLReader::ELEMENT && $xmlReader->hasAttributes)
	{
		$this->parseAttributes($xmlReader, $path);
	}

	// empty element does not have child elements
	if($xmlReader->isEmptyElement)
		return;

	// recursively reading child elements or leaving recursion on the end of the current element
	while($xmlReader->read())
	{
		if($xmlReader->nodeType == XMLReader::ELEMENT)
			$this->walkDomTree($xmlReader, $path);
		else if($xmlReader->nodeType == XMLReader::END_ELEMENT)
			return;
	}
}