- Модуль: 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;
}
}