Как получить значения всех элементов узла.

zIP

Новичок
Как получить значения всех элементов узла.

Можно ли получить значения всех элементов заданного узла с определенной вложенностью в виде массива?

PHP:
		<description>
			<title-info>
				<genre></genre>
				<genre></genre>
				<author>
					<first-name></first-name>
					<last-name></last-name>
				</author>
			</title-info>
			<publish-info>
				<book-name></book-name>
				<publisher></publisher>
			</publish-info>
		</description>
 

Exel

Новичок
Посмотрите вот здесь
Там я привел метод, который занимается переводом xml'я в массив с помощью DOM, только этот метод работает некоректно с атрибутами, комментариями и пустыми значениями, но суть понять можно :)
Ваш xml он переводит вот в такой массив:
PHP:
Array
(
    [title-info] => Array
        (
            [genre] => Array
                (
                    [0] => 1
                    [1] => 2
                )

            [author] => Array
                (
                    [first-name] => 3
                    [last-name] => 4
                )

        )

    [publish-info] => Array
        (
            [book-name] => 5
            [publisher] => 6
        )

)
А для ограничения вложенности в методе можно завести статическую переменную и складывать в нее количество вызовов.
 

zIP

Новичок
В итоге, перебрав функции php, я не нашел того, чего мне надо. DOM слишком медлено. XMLReader читает не все(Видимо зависит от кодировки).

Пришлось идти на http://www.phpclasses.org/ где и подобрал класс. Sofee XML Parser. Парсит файл 2 мег. за 1-2 секунды. Возвращает значение в виде массива.

Получить кусок необходимый мне - много менее секунды.

Рекурсивно прошел по 5,5 тыс папок и 49 тыс файлов. Сделал выборку необходимых и получил данные из 1200 файлов средним размером 1 мег. менее чем за 9 мин.

Результат меня устраивает.

Но все таки есть вопрос - это нормальная скорость или можно быстрее?
 

Exel

Новичок
У меня мой метод с DOM разбирает 2Мб файл за ~0.8с, а 6.5Мб за ~2,5c
Кстати ошибки в нем (в методе) были пофиксены и теперь он справляется с чем угодно.
 

zIP

Новичок
Автор оригинала: Exel
У меня мой метод с DOM разбирает 2Мб файл за ~0.8с, а 6.5Мб за ~2,5c
Кстати ошибки в нем (в методе) были пофиксены и теперь он справляется с чем угодно.
Поделись :)
 

Exel

Новичок
исправленную версию выложил туда же:
http://forum.dklab.ru/php/heap/IntelektualniyPerevodXmlVMassiv.html
надешь глюки - пиши :)
 
Сверху