Данные из XML -> PHP array

Мутник

Новичок
Данные из XML -> PHP array

Перечитал только что все темы на данном форуме, посвященные XML + PHP (ну почти). Также просмотрел примеры на php.net.

ВОпрос такого рода: а вообще реально ли создать нормально работающую функцию, которая будет весь xml запихивать в массив такого же вида, как сам XML?

Просто большинство примеров на php.net привязаны к какому то определенному файлу.

А если у меня 15 файлов, под каждый надо свою функцию разбора писать?

-~{}~ 11.03.05 03:16:

а в принципе интересует разбор 30.000 примерно таких записей:

PHP:
<CatalogItem> 
	<Product> 
  	<ProductID>162747</ProductID> 
		<PartNumber><![CDATA[ 0885A002AA]]></PartNumber> 
		<EANCode><![CDATA[ 4960999869148]]></EANCode> 
		<Description><![CDATA[ CANON BC-05 3COLOUR INKFOR BJC-210,]]></Description> 
		<Grouping> 
  		<GroupBy GroupID="VendorID" Value="CAN" /> 
  		<GroupBy GroupID="ClassID" Value="PCC" /> 
  		<GroupBy GroupID="Series" Value="CANON TINTES K&#256;RTRID&#381;I" /> 
  	</Grouping> 
  </Product> 
	<Qty WarehouseID="1"><QtyAvailable>2</QtyAvailable></Qty> 
	<Qty WarehouseID="2"><QtyAvailable /></Qty> 
	<Price> 
  	<UnitPrice Type="C">17.13</UnitPrice> 
	  <PromoFlag>0</PromoFlag> 
 	</Price> 
</CatalogItem>
 

neko

tеam neko
реально!
вот так устроит?
$a['0'] = $xml;

и второй вопрос, чем неустраивает simplexml?
 

neko

tеam neko
это не шутка
очевидно что массив такого же вида как дерево быть не может
потому что он заранее другого вида

но вообще написать sax парсер, который сделает из документам массив, как только придуманы какие-то правила для построения последнего, это очень нетрудная задача, которая многократно уже была решена
тоже самое с несколькими файлами
так понятно?
 

neko

tеam neko
интересно, а сразу это никак было непонятно?
ну про, попробовать
 

Мутник

Новичок
neko

т.е. по сути дела, универсального решения для построения из XML документа каког о то массива не существует? Всюду индивидуальные случаи???

если так, то можно с тем же успехом пользоваться функцией xml_parse_into_struct() и не заморачиваться особо?

Или я заблуждаюсь?

-~{}~ 11.03.05 04:22:

neko

Да попробовал. Сделал. Работает. Но не особо нравится реализация, т.к. хочется чего то более красивого и универсального. Поэтому и задал вопрос тут, т.к. у НЕКОТОРЫХ здешних опыта побольше в данном вопросе...
 

neko

tеam neko
ты можешь вместо слово "универсальный" встатвить какое-нибудь которое понимаешь?
это я к тому что, массивы это в своем роде довольно таки универсальная вещь, не находишь?
просто при попытки в них всунуть xml, неизбежно появится пара вопросов, на которые собственно и требуется тебе ответить (себе).

а функцией пользуйся, от чего бы нет...

насчет красивого опыт показал, что php в своей 4-ой версии таков, что ничего принципиально более красивого сделать не удастся.
т.е. simplexml (который является довольно красивой реализацией) там невозможен по объективным причинам
 
Сверху