__toString() is not intended to be called directly.Instead, it defines what is returned when the object is cast to string, either explicitly with:(string)$elementOr implicitly, when used in certain contexts which would cause a conversion to string.
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SimpleXMLElement::__toString — Returns the string content
Returns text content that is directly in this element. Does not return text content that is inside this element's children.
Esta función no tiene parámetros.
Returns the string content on success or an empty string on failure.
Ejemplo #1 Get string content
<?php
$xml = new SimpleXMLElement('<a>1 <b>2 </b>3</a>');
echo $xml;
?>
El resultado del ejemplo sería:
1 3
__toString() is not intended to be called directly.Instead, it defines what is returned when the object is cast to string, either explicitly with:(string)$elementOr implicitly, when used in certain contexts which would cause a conversion to string.
For those for whom it may not be immediately obvious from the example, the echo is what is forcing __toString() to be used.
However, to assign the text of a node (but not its children) to a variable:
$XML = new SimpleXMLElement('<p>Hello<span> world</span>.<span> Good day!</span></p>');
$Text = $XML->__toString();
is effectively:
$Text = 'Hello.'; // The <span>s are ignored.
Either of:
$Text = $XML->span->__toString();
$Text = $XML->span[0]->__toString();
is effectively:
$Text = ' world'; // Only the first <span> is used.
$Text = $XML->span[1]->__toString();
is effectively:
$Text = ' Good day!'; // Only the second <span> is used.