设置Simplexml节点内容

setting content of Simplexml node

我有一个 DomElement

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

我要设置两种语言的内容

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

我想我必须像获取时那样使用 ->nodevalue。 这给出了

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

所以我尝试了

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

这不会更改值。

我想要

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

这可能是我忽略的非常简单的事情...

答案在这里:

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

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

您需要设置为元素本身(而不是变量)。

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