使用SimpleXML基于另一个属性值选择属性值

时间:2013-02-20 12:12:47

标签: php xml xpath simplexml

我尝试使用xml文件和SimpleXML

显示图像

XML代码

<icons>
  <icon size="tiny"    href="/FF02-tiny.jpg"    />
  <icon size="sidebar" href="/FF02-sidebar.jpg" />
  <icon size="full"    href="/FF02-full.jpg"    />
</icons>

我想获得href行的size="full"属性。

我已经尝试了

icons->icon->attributes()->href

但这只是给我第一个'tiny'大小。我知道我应该使用xpath,但我迷路了。

2 个答案:

答案 0 :(得分:2)

是的,您可以选择带有xpath表达式的属性节点:

list($iconHref) = $xml->xpath("//icon[@size='full']/@href");
echo $iconHref;

答案 1 :(得分:0)

$icons->icon会为您提供一个SimpleXMLElement对象,可以访问icon对象的所有$icons个子元素。

从那里你需要选择你想要获得属性的图标。这适用于array - 类似于访问和零索引子元素的数值以及属性的字符串值:

// specify what icon you want (third)
// and the attribute (href)
$icons->icon[2]['href'];

您可以使用SimpleXML basic examples示例#3 示例#5 )找到PHP手册中记录的内容。

但是,如果您查找的元素的位置发生变化,则此方法无效。因此,建议您使用more specific xpath-expression instead