我有一个包含这样标记的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";
}
}
这是我尝试设置属性的代码。
答案 0 :(得分:1)
您已正确使用setAttribute()
。
您正在检索XML并将字符串传递回json_encode()
。但是,如果RetrieveConversation()
方法在返回字符串之前未正确调用saveXML()
,则输出XML字符串中将无法使用您的修改。请务必致电saveXML()
。