<root>
<gallery name="First"/>
<gallery name="Second"/>
<gallery name="Third"/>
</root>
我想我已经解决了之前问题的一部分,现在foreach循环正确吗?我仍然无法保存xml。
$objXML = new SimpleXMLElement(XML_FILE_NAME, null, true);
foreach($objXML->xpath('/root/gallery/@name') as $key => $old){
$new = $_POST['name'][$key];
echo "$key : $old : $new<br />\n";
$old = $new; // this does nothing??
}
$objXML->asXML(XML_FILE_NAME);
echo返回:
0:第一:第一个新的
1:第二:第二新
2:第三:第三次新
为什么这不会将'name'的新发布值保存回我的XML文档,我做错了什么?
答案 0 :(得分:1)
你在循环中。
这意味着每次循环返回到另一个点 $key
和$old
获取各自的新值。
我想这就是你想要实现的目标(但我不确定你是否在这里实现了目标)
foreach($objXML->xpath('/root/gallery/@name') as $key => $value){
$new = $_POST['name'][$key];
echo "$key : $old : $new<br />\n";
$old = $value;
}
来自你的评论:
$objXML = new SimpleXMLElement(XML_FILE_NAME, null, true);
$galleryLore = $objXML->gallery; // finding gallery
$i = 0;
foreach($galleryLore as $gallery){
unset($gallery['name']); // We delete the old name
$new = $_POST['name'][$i]; // We find the new name value
$gallery->addAttribute('name', $new); // We add the new attribute we deleted before
$i++;
}