如何使用name属性解析xml节点

时间:2011-08-03 19:30:54

标签: php xml

我有一个XML文件,如下所示:

<sizes>
<size name="original" width="386" height="429">
http://userserve-ak.last.fm/serve/_/62380831/Adele+PNG.png
</size>
<size name="large" width="126" height="140">http://userserve-ak.last.fm/serve/126/62380831.png</size>
<size name="largesquare" width="126" height="126">
http://userserve-ak.last.fm/serve/126s/62380831.png
</size>
<size name="medium" width="64" height="71">http://userserve-ak.last.fm/serve/64/62380831.png</size>
<size name="small" width="34" height="38">http://userserve-ak.last.fm/serve/34/62380831.png</size>
<size name="extralarge" width="252" height="280">http://userserve-ak.last.fm/serve/252/62380831.png</size>
</sizes>

我如何才能解析名称为"small"的大小节点?

到目前为止,我有代码:

echo $xml->images->image->sizes->size;

虽然有效,但需要第一张图片,我想专门找到小图片。

2 个答案:

答案 0 :(得分:1)

小图像总是第五个吗?如果是这样,你可以使用

$xml->images->image->sizes->size[4];

答案 1 :(得分:0)

$xml->images->image->sizes->size['name'] ...应该适合获取其中任何一个。无论你如何做,你都要注意属性是一个对象的事实,在你的情况下你可能希望它是一个字符串。这意味着您需要将其转换为来自对象的字符串,您可以使用(string)执行此操作,如下所示:

foreach ($xml->size as $size) {
    $the_size = (string) size['name'];
    print $the_size . "<br>";
}

这得到了所有这些&amp;将它们变成字符串,因此您可以使用strstr()strcmp()等字符串函数。