Выбор значения атрибута в SimpleXML - PullRequest
1 голос
/ 15 февраля 2009

Почему я не могу отфильтровать результаты по значению атрибута, а не по индексу?

Что-то подобное не получается.

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 ]

2 голосов
/ 15 февраля 2009

Это не работает, потому что SimpleXML - это легковесная реализация. Кроме того, вы не можете предполагать, что что-нибудь будет работать, если у вас нет спецификации.

Вы ищете функцию xpath из SimpleXMLElement объектов, т. Е .:

foreach ($portfolio->clientGroup[$id]->xpath("client[@name='foo']/src") as $src) {
   echo $src . '<br />';
}
1 голос
/ 15 февраля 2009

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 />';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...