将发布的值保存到php中的xml

时间:2010-11-23 11:02:56

标签: php dom simplexml

<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文档,我做错了什么?

1 个答案:

答案 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;
}

来自你的评论:

You can test it here.

$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++;
}