Прежде всего, в конструкторе мы создаем объект типа XMLWriter. С помощью которого, будем выполнять всю рутинную работу. Теперь, обратите внимание на метод convert (строки 14-23). В качестве единственного параметра он получает массив с данными. Метод openMemory() начинает запись нового XML документа. startDocument – вставляет заголовок. startElement($this->rootName) – создает корневой тег. По-умолчанию, используется имя root, но его можно изменить. После этого, мы проверяем, являются ли полученные данные массивом (строка 18) и вызываем метод getXML (строки 33-47), который и выполняет преобразование массива в XML формат.
Рассмотрим его подробнее. Алгоритм следующий: 1) обходим в цикле массив; 1.1) если ключ текущего элемента является числом, добавляем к нему приставку «key»; 1.2) если текущий элемент является массивом: 1.2.1) создаем открывающий тег, в качестве названия используем ключа данного элемента (строка 39); 1.2.2) вызываем метод getXML, а в качестве параметра передаем текущий элемент, т. е. вложенный массив (рекурсия); 1.2.3)создаем закрывающий тег; 1.3) создаем тег для текущего элемента массива (с помощью метода writeElement) Важно. PHP позволяет задать максимальную глубину рекурсии. И если глубина вложенности массивов будет больше этого значения, то скрипт просто не будет работать. Кроме того, класс содержит методы, которые позволяют указать версию XML, кодировку и имя корневого тега (setVersion, setEncoding, setRootName). Как видите, класс получился довольно простой, но вполне работоспособный Скачать Вы можете скачать архив с этим примером. P. S. Если у вас есть аналогичное решение буду рад обсудить Интересно почитать: Оптимизация сайтов – единственный способ вырваться в ТОП поисковиков. Хотите отдохнуть и расслабиться? Японский сад создаст нужное настроение. Забудьте о CD болванках. DVD диски превосходят их по всем параметрам. dvd купить киев