1

このようなタグを含むxmlファイルがあります。

<server>
  <conversation ip="12.0.0.1" email="none">
     <chat userstatus="1" adminstatus="2" username="admin">muja</chat>
  </conversation>
</server>

ここで、会話タグのメール属性を更新したいと思います。私がそれを使用する$conv->getAttribute("email")と、正しい結果が返されます。つまり、none.しかし、それを使用して設定しようとすると$conv->setAttribute("email","abc")、値が更新されません。これが私がやっていることです。

これは GetClientConversation() です。

private function GetClientConversation()
{
    foreach($this->conversation as $convTag)
    {
        if($convTag->getAttribute("ip") == $this->clientip)
        {
            return $convTag;
        }
    }

    return "noConversation";
}

この関数は、必要な正しい conversationTag を返します。

そして、これらの conversationsTags 配列を使用して取得します

  $this->conversation=$this->xmlDom->getElementsByTagName("conversation");

編集:

public function GetConversation()
{
        $conv=$this->GetClientConversation();
        if($conv!="noConversation")
        {
            if($conv->getAttribute("email")=="none")   
            {
                $conv->setAttribute("email","abc");    // -- Here
                return json_encode($this->RetrieveConversation($conv));
            }
            else if($conv->getAttribute("email")==$this->adminEmail)
            {
                return json_encode($this->RetrieveConversation($conv));
            }
            else
            {
                return "Admin Already Chatting";
            }
        }
        else
        {
            $this->CreateNewConversation();
            return "no";
        }
}

これは、属性を設定しようとしているコードです。

4

1 に答える 1

2

を正しく使用しsetAttribute()ました。

XML を取得し、文字列を に戻していjson_encode()ます。ただし、文字列を返す前にRetrieveConversation()メソッドが正しく呼び出されなかった場合saveXML()、変更は出力 XML 文字列で使用できません。に電話したことを確認してくださいsaveXML()

于 2012-07-29T16:26:10.157 に答える