Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как выдернуть нужную информацию из xml файла?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как выдернуть нужную информацию из xml файла?

Страниц (1): [1]
 

1. Murtahan - 19 Января, 2010 - 15:14:52 - перейти к сообщению
Доброго дня. Подскажите, пожалуйста, на примере, как после обращения к странице .../ya.xml обработать ответ и из полученного текста:

CODE (html):
скопировать код в буфер обмена
  1. <categories>
  2. <category id="11">
  3. ПК И НОУТБУКИ
  4. </category>
  5. <category id="676" parentId="11">
  6. ноутбуки HP-Compaq
  7. </category>
  8. ...
  9. <offers>
  10. <offer id="2594" available="true">
  11. <url>
  12. http://www.maxbooki.ru/element.php?ya=100119&e=2596
  13. </url>
  14. <price>
  15. 22600
  16. </price>
  17. <currencyId>
  18. RUR
  19. </currencyId>
  20. <categoryId>
  21. 34
  22. </categoryId>
  23. <picture>
  24. http://www.maxbooki.ru/pics/goods/2594s.jpg
  25. </picture>
  26. <name>
  27. ноутбук Toshiba Satellite A300D-226 (PSAHCE-02301HRU) AMD Athlon QL-64 (2.1GHz) / 4096Mb / 320Gb / DVDRW / TFT 15.6" 1366x768 / HD 3470 256Mb / Wi-Fi / Cam / W7HP
  28. </name>
  29. </offer>
  30. <offer id="2596" available="true">
  31. <url>
  32. http://www.maxbooki.ru/element.php?ya=100119&e=2596
  33. </url>
  34. <price>
  35. 22890
  36. </price>
  37. <currencyId>
  38. RUR
  39. </currencyId>
  40. <categoryId>
  41. 34
  42. </categoryId>
  43. <picture>
  44. http://www.maxbooki.ru/pics/goods/2596s.jpg
  45. </picture>
  46. <name>
  47. ноутбук Toshiba Satellite L350-22R (PSLD8E-0S4032RU) CoreDuo T3000 (1.8GHz) / 3072Mb / 320Gb / DVDRW / TFT 17.0" 1440x900 / GMA 4500M / Wi-Fi / Сam / W7HP
  48. </name>
  49. <description>
  50. Описание товара
  51. </description>
  52. </offer>
  53. ...



Взять и добавить в массив нужную нам информацию, а именно:
Наименование продукции, цена, категория, описание. Далее из строки наименование нужно сделать другой массив, в котором такая строчка, к примеру, как:

ноутбук Toshiba Satellite L350-22R (PSLD8E-0S4032RU) CoreDuo T3000 (1.8GHz) / 3072Mb / 320Gb / DVDRW / TFT 17.0" 1440x900 / GMA 4500M / Wi-Fi / Сam / W7HP

разобьется на Toshiba Satellite L350-22R, PSLD8E-0S4032RU, CoreDuo T3000 (1.8GHz), 3072Mb, 320Gb, DVDRW, TFT 17.0" 1440x900, GMA 4500M, Wi-Fi, Сam, W7HP

?

Буду очень признателен за любую помощь.
2. EuGen - 19 Января, 2010 - 15:18:18 - перейти к сообщению
Ищите нужный текст а затем разбивайте его при помощи регулярных выражений. (см. Приложение 3 в уроках)
3. Viper - 19 Января, 2010 - 15:29:38 - перейти к сообщению
а разве simpleXML не поможет тут ?
4. EuGen - 19 Января, 2010 - 15:38:53 - перейти к сообщению
И то верно. Запрашивается же xml файл.
5. Carzil - 19 Января, 2010 - 15:40:05 - перейти к сообщению
Viper, поможет. Просто EuGen предложил самый простой вариант.
6. Murtahan - 19 Января, 2010 - 15:53:18 - перейти к сообщению
Viper пишет:
а разве simpleXML не поможет тут ?


Ничего не знаю о simpleXML. Только сейчас начал изучать. Как присвоить запрашиваемый текст переменной $xml ?
7. Viper - 19 Января, 2010 - 15:56:47 - перейти к сообщению
Murtahan http://ua2.php.net/manual/en/fun...ml-load-file.php
все предельно просто.
8. EuGen - 19 Января, 2010 - 16:00:11 - перейти к сообщению
Carzil
В данном случае проще работать с xml - я просто не обратил внимания, что запрашивается именно xml
9. JustUserR - 19 Января, 2010 - 16:01:06 - перейти к сообщению
Murtahan Про библиотеку SimpleXML можно вкратце почитать тут http://php.su/functions/?cat=simplexml Конечно можно разбивать с помощью регулярных выражений НО даже авторы мануала по Perlу (Который является конечно родоначальником регулярных выражений) не советуют разбивать XML-файлы с помощью них
Murtahan пишет:
Ничего не знаю об этой функции. Только сейчас начал изучать. Как присвоить запрашиваемый текст переменной $xml ?
Можете не беспокоиться по этому вопросу - функции библиотеки SimpleXML работат как с отдельными XML-файлами так и с XML-содержимым в памяти

PS Подсветка кода улетела - или мне каежтся Подмигивание
10. Murtahan - 19 Января, 2010 - 21:38:54 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     $xml = simplexml_load_file('ya.xml');
  4.     echo "Начинаем вывод";
  5.     foreach ($xml->offer as $offer) {
  6.         echo $offer->name;
  7.     }
  8.  
  9. ?>


Выводится только "Начинаем вывод". Что здесь не так?
11. Viper - 19 Января, 2010 - 22:45:04 - перейти к сообщению
Murtahan пишет:
Выводится только "Начинаем вывод". Что здесь не так?

неверно.

$xml же у вас объект.

PHP:
скопировать код в буфер обмена
  1. foreach ($xml as $offer) {
  2.         echo $offer->name;
  3. }

 

Powered by ExBB FM 1.0 RC1