SimpleXML中的属性值选择

时间:2009-02-15 17:24:11

标签: php xml

为什么我不能过滤属性值而不是索引?

这样的事情失败了。

foreach ($portfolio->clientGroup[$id]->client['name=foo']->src as $src) {
   echo $src . '<br />';
}

但这很有效。

foreach ($portfolio->clientGroup[$id]->client[0]->src as $src) {
   echo $src . '<br />';
}

2 个答案:

答案 0 :(得分:2)

这不起作用,因为SimpleXML是一个轻量级的实现。另外,除非您有规范,否则不能假设任何工作。

您正在寻找SimpleXMLElementforeach ($portfolio->clientGroup[$id]->xpath("client[@name='foo']/src") as $src) { echo $src . '<br />'; } 个对象,即:

{{1}}

答案 1 :(得分:1)

SimpleXML以嵌套数组的形式提供对文档的访问。无法将XPath表达式作为数组索引。

尝试类似:

$query = "client[@name='foo']/src"; // if name is an attribute
$query = "client[name='foo']/src";  // if name is a child element

foreach ($portfolio->clientGroup[$id]->xpath($query) as $src ) {
   echo $src . '<br />';
}