Я только что сделал ваш тест, потому что мне было любопытно, и я обнаружил, что он действительно выдает строковое значение yellow
при преобразовании в строку.
$fruits = simplexml_load_string(
'<fruits>
<kiwi color="green" texture="hairy"/>
<banana color="yellow" texture="waxy"/>
</fruits>');
$found = $fruits->xpath('//banana/@color');
echo $found[0];
Казалось бы, именно так представлены SimpleXmlElement
узлы атрибута. Таким образом, вы можете использовать это как (string) $found[0]
, если вы не печатаете / отражаете его напрямую.
Конечно, если вы зависите от значения, равного SimpleXMLElement
, то это может быть проблемой, я полагаю. Но я бы подумал, что просто помнить о том, чтобы привести в качестве строки, когда вы позже будете использовать этот узел, все равно можно было бы сделать.
Если вам действительно нужен подробный интерфейс для узлов, который поддерживает атрибут в качестве узла, тогда вы можете просто переключиться на DOMDocument
. Ваш код станет более подробным, но реализация станет более понятной.