Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вытягивание изображения из XML SimpleXML 
:(
    Опции темы
nmc
Дата 15.8.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 7.4.2009

Репутация: нет
Всего: -1



Привет!

Народ есть файл  http://en.uefa.com/rssfeed/uefaeuro2012/rss.xml

текст вытягивается 

Код

$rss = simplexml_load_file('...rss.xml');

$title =  $rss->channel->title;

$item = $rss->channel->item;

и отображается просто
Код

// используется smarty
{foreach  from=$item item=n}
                 <b>{$n->title}</b>>                           
         <p>{$n->description}</p>                         
        {/foreach} 


сам xml файл имеет такую структуру 
Код

<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel>
<title>UEFA.com - UEFA EURO 2012� - News</title>
      <link>http://www.uefa.com</link>
      <description>All news about European football. Generic news, match previews, match reports and much more.</description>
      <language>en</language>
      <copyright><![CDATA[copyrightuefa1998-2010]]></copyright>
      <pubDate>Thu, 12 Aug 2010 13:45:00 GMT</pubDate>
      <lastBuildDate>Thu, 12 Aug 2010 13:45:00 GMT</lastBuildDate>
      <image>
      <title>UEFA.com</title>
      <url>http://img.uefa.com/imgmlrssheader.jpg</url>
      <link>http://www.uefa.com/.html</link>
      <width>144</width>
      <height>46</height>
      <description>news_rssDescription</description>
      </image>
      <item>
      <title><![CDATA[EURO qualifying to start in earnest]]></title>
      <link>http://www.uefa.com/uefaeuro2012/news/newsid=1504144.html?rss=1504144+EURO+qualifying+to+start+in+earnest</link>
      <description><![CDATA[Holders Spain, Germany and the Netherlands are among the 49 teams who begin their campaigns next month after Estonia beat the Faroe Islands in the first game of UEFA EURO 2012 qualifying.]]>
      </description>
      <enclosure url="http://www.uefa.com/MultimediaFiles/Photo/competitions/Comp_Matches/01/51/23/04/1512304_s5.jpg" length="2000" type="image/jpeg" />
....

....


То есть как прочитать элемент <enclosure ...../> (его отличие от остальных то что он не парный )

Код

{foreach  from=$item item=n}
             
         {$n->enclosure} // ничего не возвращает - пустая строка
                <img src="{$n->enclosure}"  align="middle" vspace="10" hspace="5" border="0">    // отображаем изображение     
                                 
{/foreach} 
    
PM   Вверх
bars80080
Дата 15.8.2010, 15:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



Цитата(nmc @  15.8.2010,  12:25 Найти цитируемый пост)
его отличие от остальных то что он не парный

ну, понятия "не парный" нету. он просто не имеет содержимого, поэтому и обращение $n->enclosure возвращает пустую строку, ведь её нет.
а то что внутри тэга - это атрибуты, и у вашего класса определённо должен быть метод для получения атрибутов. ну а найти его, совсем просто:

http://yandex.ru/yandsearch?text=php+simpl...D1%82&lr=22

вторая ссылка по-моему даст нужный ответ
PM MAIL WWW   Вверх
skyboy
Дата 15.8.2010, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(bars80080 @  15.8.2010,  14:09 Найти цитируемый пост)
и у вашего класса определённо должен быть метод для получения атрибутов.

ага, есть в SimpleXmlElement::attributes
PM MAIL   Вверх
nmc
Дата 18.8.2010, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 7.4.2009

Репутация: нет
Всего: -1



 Оk. Там есть все что нужно.
Но почему к атрибуту  -- > url

Код

<enclosure url="http://www.uefa.com/MultimediaFiles/Photo/competitions/Comp_Matches/01/51/23/04/1512304_s5.jpg" length="2000" type="image/jpeg" />


можно добраться только  через  метод  attributes()

Код

{foreach  from=$item item=n}
$n->enclosure->attributes()//так можно получить именно  url - ->> http://www.uefa.com/MultimediaFiles/..../04/1512304_s5.jpg
{/foreach}    


но нельзя так
Код

{foreach  from=$item item=n}
$n->enclosure['url']
{/foreach}


Это сообщение отредактировал(а) nmc - 18.8.2010, 09:52
PM   Вверх
skyboy
Дата 18.8.2010, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



чтоб к дочерним элементам получать доступ через ->, а к атрибутам - как в массиве, по индексу? а также по индексу выбирать определенный элемент по порядку($n->enclosure[5])? сам не запутаешься?
PM MAIL   Вверх
nmc
Дата 18.8.2010, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 7.4.2009

Репутация: нет
Всего: -1



Имел  ввиду что если так то 
Код

{foreach  from=$item item=n}
$n->enclosure['url']
{/foreach}


то возникает ошибка 


добраться к атрибуту можно только так 

Код

{foreach  from=$item item=n}
$n->enclosure->attributes()//так можно получить именно  url - ->> http://www.uefa.com/MultimediaFiles/..../04/1512304_s5.jpg
{/foreach} 


А как например добраться к другому атрибуту элемента <enclosure  url='...'   length="2000" type="image/jpeg"  /> не 'url' а например   'type' 
PM   Вверх
bars80080
Дата 18.8.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



а что возвращает $n->enclosure->attributes() ?
и точно ли в attributes() не передаётся никаких параметров?
PM MAIL WWW   Вверх
nmc
Дата 19.8.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 7.4.2009

Репутация: нет
Всего: -1



Цитата(bars80080 @ 18.8.2010,  17:53)
а что возвращает $n->enclosure->attributes() ?
и точно ли в attributes() не передаётся никаких параметров?

Возвращает такого типа  http://www.uefa.com/MultimediaFiles/Photo/...2/919652_s5.jpg

Метод вызывается так, параметров никаких не принимает
Код

    {foreach  from=$item item=n}         
        <img  src="{$n->enclosure->attributes()}"  align="left" >                             
        {/foreach}    

PM   Вверх
skyboy
Дата 19.8.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



вообще-то attributes() возвращает массив
т.е. можно сделать так:
Код

{assign var=attr value=$n->enclosure->attributes()}
{$attr.url}{$attr.type}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.