PHP-属性的循环xml

PHP-属性的循环xml,php,xml,foreach,simplexml,Php,Xml,Foreach,Simplexml,如何循环使用此xml并获取第二个标记的属性href?属性为rel=“enclosure” 这是XML <entry> <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/dax/5495234222/in/set-756787626064123145/"/> <link rel="enclosure" type="image/jpeg" href="h

如何循环使用此xml并获取第二个
标记的属性
href
?属性为
rel=“enclosure”

这是XML

  <entry>
    <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/dax/5495234222/in/set-756787626064123145/"/>
    <link rel="enclosure" type="image/jpeg" href="http://farm6.staticflickr.com/5012/5485746322_9821c561bf_b.jpg" />
  </entry>

这是目前为止的php脚本:

<?php
foreach ($feed->entry as $item) {
    $photo = $item->link['href'];
    ?>
    <div class="">
    <a href="<?php print $photo; ?>" class="colorbox-load"><img class="img-responsive" src="<?php print $photo; ?>"></a>
    </div>

<?php
}
?>

这与它打印第一个
href
这一事实不同,这不是我需要的。

用于解析XML:

用于解析XML:


使用
simplexml
xpath
根据另一个属性选择属性。
xpath
类似于XML的SQL查询:

$xml = simplexml_load_string($x); // assume XML in $x

$link = (string)$xml->xpath("/entry/link[@rel = 'enclosure']/@href")[0];
第2行末尾的
[0]
要求PHP>=5.4。如果您使用的是较低版本,请更新或执行以下操作:

$link = $xml->xpath("/entry/link[@rel = 'enclosure']/@href");
$link = (string)$link[0];
xpath
-表达式选择所有
节点的
href
-属性,这些节点具有属性
rel='enclosure'
,并且在
simplexml元素的
数组中作为其父节点

上面的代码将仅选择
数组的第一个元素
,并将其转换为
字符串

看到它工作了吗

如果您希望使用
foreach
-循环,则需要检查
rel属性,如下所示:

foreach ($xml->entry as $entry) {

    if ($entry->link['rel'] == 'enclosure') {

        echo "This is the link: " . $entry->link['href'];
    }
}

使用
simplexml
xpath
根据另一个属性选择属性。
xpath
类似于XML的SQL查询:

$xml = simplexml_load_string($x); // assume XML in $x

$link = (string)$xml->xpath("/entry/link[@rel = 'enclosure']/@href")[0];
第2行末尾的
[0]
要求PHP>=5.4。如果您使用的是较低版本,请更新或执行以下操作:

$link = $xml->xpath("/entry/link[@rel = 'enclosure']/@href");
$link = (string)$link[0];
xpath
-表达式选择所有
节点的
href
-属性,这些节点具有属性
rel='enclosure'
,并且在
simplexml元素的
数组中作为其父节点

上面的代码将仅选择
数组的第一个元素
,并将其转换为
字符串

看到它工作了吗

如果您希望使用
foreach
-循环,则需要检查
rel属性,如下所示:

foreach ($xml->entry as $entry) {

    if ($entry->link['rel'] == 'enclosure') {

        echo "This is the link: " . $entry->link['href'];
    }
}

您可以通过选择带有附件关系的链接的href来执行此操作:
$photo=$item->xpath('link[@rel=“enclosure”]/@href')[0]-当您需要机柜时,位置(第一、第二)是一个太弱的标准。另请参见。也可能重复:您可以通过选择带有附件关系的链接的href来执行此操作:
$photo=$item->xpath('link[@rel=“enclosure”]/@href')[0]-当您需要机柜时,位置(第一、第二)是一个太弱的标准。另请参见。也可以是以下内容的副本: