Хотя я большой поклонник встроенного DOMDocument, в отличие от SimpleXML, и поэтому не все, что знакомы с SimpleXML ...
Я полагаю $xml->xpath('/release/images/image[@type="primary"]')
Должен дать вам список узлов,ни одного узла.
В вашем случае я бы ожидал, что возможное решение будет таким же простым, как
$nodes = $xml->xpath('/release/images/image[@type="primary"]'); // get matching nodes
$node = reset($nodes); // get first item
$uri = $node->attributes()->uri;
Поскольку вы специально упомянули использование SimpleXML, я бы посоветовал вам поискатьв результате вашего звонка на $xml->path(...)
Но для полноты, вот как я бы это сделал, используя DOMDocument и DOMXPath (который будет работать, гарантировано, протестировано и все):
$doc = new DOMDocument('1.0', 'utf8');
$doc->loadXML($yourXMLString);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('/release/images/image[@type="primary"]');
$theNodeYouWant = $nodes->item(0); // the first node matching the query
$uri = $theNodeYouWant->getAttribute('uri');
Это кажетсянемного более многословно, но это в основном потому, что я включил инициализацию для этого.