Ответы пользователя по тегу XML
  • Как распарсить XML файл в массив?

    @Panda_Tamara
    Разработчик проектов под UMI.CMS
    Ловите велосипед. Для вызова передаете объект XMLReader и ноду для начала парсинга. Возвращается ассоциативный массив, причем если на одном уровне будет несколько одинаковых нод, он вернет их подмассивом с числовыми индексами.

    public function xmlReader2assoc($xml, $name) {
            $tree = null;
    
            while ($xml->read()) {
                if ($xml->nodeType == XMLReader::END_ELEMENT) {
                    return $tree;
                } else if ($xml->nodeType == XMLReader::ELEMENT) {
                    if ((!$xml->isEmptyElement)) {
                        $childs = $this->xmlReader2assoc($xml, $xml->localName);
    
                        if (count($childs) > 1) {
                            if (isset($tree[$xml->localName])) {
                                if (!isset($tree[$xml->localName][0])) {
                                    $moved = $tree[$xml->localName];
                                    unset($tree[$xml->localName]);
                                    $tree[$xml->localName][0] = $moved;
                                }
                                $tree[$xml->localName][] = $childs;
                            } else {
                                $tree[$xml->localName] = $childs;
                            }
                        } else {
                            $tree[$xml->localName] = $childs;
                        }
                    }
                } else if ($xml->nodeType == XMLReader::TEXT) {
                    $tree = $xml->value;
                }
            }
            return $tree;
        }
    Ответ написан
    Комментировать