Отпарсить XML файл

Pustota

Новичок
Отпарсить XML файл

Есть XML файл вида:
Код:
<item type="guest" row="1">
  <id>3472357</id> 
  <name>some name1</name>
  <description>some description1</name>
  ... остальные параметры...
</item>
<item type="guest" row="2">
  <id>824456</id> 
  <name>some name2</name>
  <description>some description2</name>
  ... остальные параметры...
</item>
<item type="guest" row="3">
  <id>3648243</id> 
  <name>some name3</name>
  <description>some description3</name>
  ... остальные параметры...
</item>
<item type="guest" row="4">
  <id>1654555</id> 
  <name>some name4</name>
  <description>some description4</name>
  ... остальные параметры...
</item>
Нужно его отпарсить. Но нужны не все поля, а только ID и NAME. Нужно это потому, что данных очень много, и на обработку всего XML файла не хватает выделенной под PHP памяти.
Помогите, как написать правильный код, желательно с комментариями? Смотрел мануал по PHP в частности раздел "XML Parser Functions". Но ничего не понял, там описано только как весь файл обработать и вывести. А нужно выцепить только по два значения из каждого ITEM'а.
 

Фанат

oncle terrible
Команда форума
кто мешает читать файл построчно и искать нужные параметры простым регом?
 

Pustota

Новичок
Идея интересная. А не подскажете, как вытащить "3472357" из "<id>3472357</id>"? (просто в регекспах не силён)...
 

Фанат

oncle terrible
Команда форума
идея не интересная, а примитивная.
скорее, даже, очевидная, если не находиться под гипнозом волшебного слова XML

if(substr($str,0,4)=='<id>') $id=substr($str,4,-5);
 

Pustota

Новичок
Нет, а регекспами? Считать позиции неинтересно и, думаю, долго. Хотелось бы потом в дальнейшем не только к ID это применять.

Всё равно спасибо большое. Действительно под гипнозом от этого XML. Пока только негативные впечатления от него.
 

Фанат

oncle terrible
Команда форума

Pustota

Новичок
Народ, а кто-нибудь, может, подскажет, как с помощью XML функций в PHP это отпарсить? Обычным чтением файла не получается. Слишком много данных.
 

Pustota

Новичок
Мешает то, что файл беру не с диска, а http линк. Ещё мешает то, что размер такого удаленного файла доходит до 6 мегов. Плюс ещё прочитать, выдернуть строку substr'ом и пр. В итоге PHP вываливает с ошибкой, что превышены допустимые 8 Мб для выполнения скрипта. :( Ну и к тому же ещё данные в MySQL записываю. В итоге финиш.
 

SiMM

Новичок
> Мешает то, что файл беру не с диска, а http линк.
1. Какая разница?
2. Что мешает сохранить файл с http-линка, приведя таким образом задачу под условия, когда файл лежит в файловой системе?

> В итоге PHP вываливает с ошибкой, что превышены допустимые 8 Мб для выполнения скрипта.
> кто мешает читать файл построчно и искать нужные параметры простым регом?
Переведу на русский, для тех, кому непонятно. Читать построчно - значит не читать весь файл в память. А читать строчку за строчкой. А не весь сразу. Откуда при таких условиях может вывалиться лимит в 8 Мб, когда памяти нужно всего-то под буфер строки (если забыть о других накладных расходах, связанных с парсингом)?

> Ну и к тому же ещё данные в MySQL записываю.
А это здесь при чём?
 
Сверху