DOMElement :: setAttribute不能运行php

时间:2012-07-29 16:05:18

标签: php xml

我有一个包含这样标记的xml文件。

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

现在我想更新会话标记的email属性。 当我使用$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";
}

这个函数返回了我需要的正确的conversationTag。

我使用

获取这些对话标记数组
  $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";
        }
}

这是我尝试设置属性的代码。

1 个答案:

答案 0 :(得分:1)

您已正确使用setAttribute()

您正在检索XML并将字符串传递回json_encode()。但是,如果RetrieveConversation()方法在返回字符串之前未正确调用saveXML(),则输出XML字符串中将无法使用您的修改。请务必致电saveXML()