[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсер XML
Гость_Иван
В общем проблема в следующем: имеется следующий xml-документ

<auto-catalog>
<creation-date>
2010-7-19 9:28:32 GMT+2</creation-date>
<host>
www.automobil.ua</host>
<offers>
<offer
type="private">
<seller-phone>
(095) 520-99-14</seller-phone>
<seller>
den</seller>
<additional-info>
Музыка, тонировка. Машина как машина.</additional-info>

<mark>
ЗАЗ</mark>
<model>
Славута</model>
<price>
17000</price>
<currency-type>
USD</currency-type>
<run>
87</run>
<displacement>
1.20</displacement>

<year>
2004</year>
<run-metric>
тыс. км.</run-metric>
<url>
http://automobil.ua/auto/ЗАЗ_Славута_101731.html</url>
<date>
2010-07-18 00:00:27 GMT+2</date>
<steering-wheel>
левый</steering-wheel>
<seller-city>
Краматорск</seller-city>

<color>
Синий</color>
<engine-type>
Бензин</engine-type>
<image>
http://automobil.ua/objav/img/1/101731/400x300/pic-0.jpg</image>
</offer>

</offers>

</auto-catalog>



Так вот, как используя SimpleXML получить данные из элемента seller-phone и других, которые содержат дефис (-) в названии?!

В ООП такой синтаксис не допустим! Верно?! Как быть?



Спустя 1 минута, 22 секунды (28.07.2010 - 13:55) Lenarfate написал(а):
а ты уже пробывал?

Спустя 5 минут, 19 секунд (28.07.2010 - 14:00) Guest написал(а):
Ну раз здесь пишу значит пробывал!

Вот как я делал:

$xml = simplexml_load_file('http://automobil.ua/partner-auto.xml');

foreach($xml->offers->offer as $item){

echo $item->seller // это работает
echo $item->seller-phone //здесь ошибка


}

Спустя 2 минуты, 53 секунды (28.07.2010 - 14:03) Lenarfate написал(а):
поменяй везде - на _ ))
а так по ходу реально не работает

Спустя 5 минут, 11 секунд (28.07.2010 - 14:09) Семён написал(а):
$xml = simplexml_load_file("твой.xml");
$myvar = $xml->offers->offer->xpath('seller-phone');
foreach ($myvar as $result)
{ $myvar = $result; }


Данный способ поможет тебе с практически любым типом названий.
Внимательнее читай документацию к SimpleXML biggrin.gif

Спустя 3 минуты, 52 секунды (28.07.2010 - 14:12) Семён написал(а):
Естественно в $myvar содержится результат.

Спустя 57 секунд (28.07.2010 - 14:13) Guest написал(а):
А почему так не работает:

$xml = simplexml_load_file("твой.xml");
foreach($xml->offers->offer as $item){
echo $item->xpath('seller-phone');
}

Спустя 1 минута, 54 секунды (28.07.2010 - 14:15) Семён написал(а):
Глупый вопрос.

Спустя 2 минуты, 26 секунд (28.07.2010 - 14:18) Guest написал(а):
Может быть! Но все же. Буду очень благодарен!

Спустя 3 минуты, 1 секунда (28.07.2010 - 14:21) Семён написал(а):
Вот ещё проще вариант, но если будут в секции встречаться двоеточия запятые и другие символы не факт что будет 100% работать, но для твоего варианта вполне:

$xml = simplexml_load_file("test.xml");
$myvar = $xml->offers->offer->{'seller-phone'};
echo $myvar;


В твоём случае у тебя не работало потомучто в цикле чёрти что происходит толи ты с объектом SimpleXML пытаешься работать, толи с простым массивом. (всё дело в заранее не подготовленном xpatch...

Спустя 7 минут, 8 секунд (28.07.2010 - 14:28) Guest написал(а):
Большое спасибо!!! Все получилось!

Спустя 1 минута, 42 секунды (28.07.2010 - 14:30) Семён написал(а):
Guest
Да нзчт, осмысленно нужно писать те или иные вещи smile.gif
Удачи.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.