Leif Neland
Leif Neland

Reputation: 1518

setting content of Simplexml node

I have a DomElement

<title>
   <language id="1" />
   <language id="2" />
</title>

I want to set the content of both languages

$node=$pp->title
foreach($node->language as $lang) {
    $lang->nodeValue="Default";
}

I presumed I had to use ->nodevalue as I do when getting. This gives

 <title>
   <language id="1"><nodeValue>Default</nodeValue></language>
   <language id="2"><nodeValue>Default</nodeValue></language>
</title>

So I tried

$node=$pp->title
foreach($node->language as $lang) {
    $lang="Default";
}

This does not change the value.

I wanted

 <title>
   <language id="1">Default</language>
   <language id="2">Default</language>
</title>

It is probably something very simple I'm overlooking...

Upvotes: 0

Views: 44

Answers (2)

George Pavelka
George Pavelka

Reputation: 2329

You need to set to the element itself (not to the variable).

foreach($node->language as $lang) {
    $lang->{0} = "Default";
}

Upvotes: 1

Leif Neland
Leif Neland

Reputation: 1518

The answer is here:

How can I set text value of SimpleXmlElement without using its parent?

$node=$pp->title
foreach($node->language as $lang) {
    $lang[0]="Default";
}

Upvotes: 0

Related Questions