0

这是一个创建注释元素的函数(在处理注释的类中)

function add($id,$message){
    $newcomment = $this->source->addChild('comment');
    $newcomment->addAttribute('user',$id);
    $newcomment->addAttribute('timestamp',time());

    $newcomment = $message; // <--------- fail

    $this->source->asXML($this->save);
    return(true);
}

所有这些都有效,但我显然不知道我在用我指向的线做什么。但我基本上想将消息放在评论元素中,如下所示:

<comments>
  <comment id="12345678" timestamp="1355812061">
    Hey friend, what's up?
  </comment>
  <comment id="87654321" timestamp="1355813155">
    Nothing much, just have this problem with simpleXML
  </comment>
</comments>

但是我所拥有的只是没有设置消息。

所以我的问题是,这可能吗?如果可以,我该怎么办?

4

3 回答 3

2

使用第二个参数将新创建的子元素的值设置为addChild(),如下所示:

$newcomment = $this->source->addChild('comment', $message);

然后你可以摆脱你指向的线。

于 2013-01-13T00:50:57.583 回答
1

所以我的问题是,这可能吗?如果可以,我该怎么办?

是的,这是可能的。您可以使用数组样式的语法直接写入元素:

$newcomment[0] = $message;

SimpleXML 不允许将文本内容写入普通变量,但它允许写入具有数组样式访问 ( $node[$n] = 'string') 或属性样式访问 ( $node->child = 'string') 的元素。

要写入变量中包含的元素,请使用0带有数组语法的索引,如上所示。

于 2013-01-13T01:05:37.980 回答
0

只需addChild()在创建评论字段时添加第二个参数:

$newcomment = $this->source->addChild('comment', $message);
于 2013-01-13T00:50:54.743 回答