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")它时,我得到了正确的结果,即无。但如果我尝试使用$conv->setAttribute("email","abc")它来设置它,它不会更新值。这就是我正在做的事情。

这是 GetClientConversation():

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

    return "noConversation";
}

此函数返回我需要的正确对话标签。

我得到这些对话标签数组使用

  $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()没有正确调用该方法,则您的修改将不会在输出 XML 字符串中可用。saveXML()确保您已致电saveXML().

于 2012-07-29T16:26:10.157 回答