1

how to set text for a SimpleXMLElement in php?

0

3 Answers 3

14

Let's say $node is an SimpleXMLElement. This code:

$node->{0} = "some string" 

will result in an extra childNode in PHP 7, instead of setting the text content for $node. Use:

$node[0] = "some string" 

instead.

Sign up to request clarification or add additional context in comments.

1 Comment

Fab answer for PHP7!
5

Did you look at the basic documentation examples?

From there:

include 'example.php'; $xml = new SimpleXMLElement($xmlstr); $xml->movie[0]->characters->character[0]->name = 'Miss Coder'; echo $xml->asXML(); 

2 Comments

what if I need to set an element's text without knowing its parent? in other words, the element has already being created,perhaps with some attributes.
For that you use the XPath syntax to make a query like: foreach ($xml->xpath('//character') as $character) { echo $character->name, 'played by ', $character->actor, '<br />'; }
2
$xml = SimpleXMLElement('<a><b><c></c></b></a>'); $foundNodes = $xml->xpath('//c'); $foundNode = $foundNodes[0]; $foundNode->{0} = "This text will be put inside of c tag."; $xml->asXML(); // will output <a><b><c>This text will be put inside of c tag.</c></b></a> 

More on my search of this answer here:

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.