Разобрать XML ссылку с PHP - PullRequest
0 голосов
/ 09 марта 2012

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

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"/>

К вашему сведению, это не работает:

echo $ value-> link;

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

Ответы [ 5 ]

3 голосов
/ 09 марта 2012

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

$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
1 голос
/ 09 марта 2012

В каждом значении $ это просто 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

1 голос
/ 09 марта 2012

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

$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 голосов
/ 09 марта 2012

href является атрибутом, поэтому:

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

или

foreach($pictureBoxXMLFeed->entry as $value){
    echo $value->link->attributes()->href;
    echo '<br/>';
}
0 голосов
/ 09 марта 2012

Попробуйте:

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

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

...