Вот решение.По сути, вы можете сделать вызов XPath из узла результатов, чтобы получить все элементы атрибута с атрибутом name, равным author.
Затем вы проверяете и убедитесь, что результат вернулся, и если он это сделал, он будет индексирован.[0], поскольку вызовы XPath возвращают массив результатов.Затем вы используете функцию attributes()
, чтобы получить ассоциированный массив атрибута, и, наконец, получить желаемое значение.
$XML = simplexml_load_string($xml_string);
$XMLResults = $XML->xpath('/GSP/RES/R');
foreach($XMLResults as $Result) {
$Label = $Result->Label;
$AuthorAttribute = $Result->xpath('//Attribute[@name="author"]');
// Make sure there's an author attribute
if($AuthorAttribute) {
// because we have a list of elements even if there's one result
$attributes = $AuthorAttribute[0]->attributes();
$Author = $attributes['value'];
}
else {
// No Author
}
}