Данные из 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>
 
реально!
вот так устроит?
$a['0'] = $xml;

и второй вопрос, чем неустраивает simplexml?
 
это не шутка
очевидно что массив такого же вида как дерево быть не может
потому что он заранее другого вида

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

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

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

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

-~{}~ 11.03.05 04:22:

neko

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

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

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