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()次のように、2 番目のパラメーターを使用して、新しく作成された子要素の値を に設定します。

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

次に、指している行を取り除くことができます。

于 2013-01-13T00:50:57.583 に答える
1

だから私の質問は、これは可能ですか?もしそうなら、私は何をしなければなりませんか?

はい、可能です。配列スタイルの構文を使用して、要素に直接書き込むことができます。

$newcomment[0] = $message;

SimpleXML では、テキスト コンテンツをプレーンな変数に書き込むことはできませんが、配列スタイル アクセス ( $node[$n] = 'string') またはプロパティスタイル アクセス ( ) を使用して要素に書き込むことはできます$node->child = 'string'

変数に含まれる要素に書き込むには、0上記の配列構文で index を使用します。

于 2013-01-13T01:05:37.980 に答える
0

addChild()コメント フィールドを作成するときに、2 つ目のパラメータを追加するだけです。

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