2012-03-09 2 views
0

У меня есть канал XML, который выглядит примерно так:Анализировать XML связь с PHP

xml

Я могу разобрать название достаточно легко с помощью SimpleXML:

$pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml');; 

echo $pictureBoxXMLFeed->entry[1]->title; 

foreach($pictureBoxXMLFeed->entry as $value){ 

    echo $value->title; 
    echo '<br/>'; 

} 

Но мне нужно, чтобы захватить элемент ссылки в канале, который выглядит примерно так:

<link href="http://www.picturebox.tv/watchnow?id=UKIC30" rel="alternate"/> 

FYI, это сделать esn't work:

echo $ value-> link;

Спасибо за любую помощь ...

+0

Определение "не работает" - это просто не показывать что-нибудь или это порождает ошибку? – enygma

+0

ничего не показывает, он выделяется как эхо в DreamWeaver, заставляя меня поверить, что это зарезервировано? –

+0

Если корневой элемент XML является записью, вам не нужно обращаться к нему. Что происходит с echo $ pictureBoxXMLFeed-> link-> attributes() -> href; – Martin

ответ

3

Это вы имеете в виду?

$string = ' 
<entry> 
    <link href="http://www.picturebox.tv/watchnow?id=UKIC30" rel="alternate"/> 
</entry>'; 

$simpleXML = simplexml_load_string($string); 
foreach($simpleXML->link->attributes() as $name => $value) { 
    echo $name.': '.$value.'<br />'; 
} 

Дает:

href: http://www.picturebox.tv/watchnow?id=UKIC30 
rel: alternate 
-2

Попробуйте это:

$pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml',LIBXML_NOEMPTYTAG); 

Тогда смотрите, если link приходит через ...

+1

Файл загружается в простой XML просто отлично. Он пытается получить атрибут через неправильный доступ. – MetalFrog

1

В каждом из $ значения, это simplexml_element, вы являетесь атрибутом href, поэтому вам необходимо сделать проверку на

foreach ($value->attributes as $a) { 
    if ($a->getName() == "href") { do something; } 
} 

или $value->{"href"}; http://us2.php.net/manual/en/class.simplexmlelement.php

+0

Спасибо за помощь –

1

Как насчет этого?

$pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml');; 

foreach($pictureBoxXMLFeed->entry[1] as $value){ 
    if($value->getName() == 'link') { 
    echo $value->asXML(); 
    } 
} 
0

HREF является атрибутом, так:

foreach($pictureBoxXMLFeed->entry as $value){ 
    echo $value->link['href']; 
    echo '<br/>'; 
} 

или

foreach($pictureBoxXMLFeed->entry as $value){ 
    echo $value->link->attributes()->href; 
    echo '<br/>'; 
} 
Смежные вопросы