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

发布于 2024-10-04 16:09:21 字数 642 浏览 3 评论 0原文

<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);

回声返回:
0:第一个:第一个新
1:第二个:第二个新
2 : 第三 : 第三新

为什么这不将“名称”的新发布值保存回我的 XML 文档,我做错了什么?

<root>
  <gallery name="First"/>
  <gallery name="Second"/>
  <gallery name="Third"/>
</root>

I think I have solved part of a previous problem and now have the foreach loop correct? Still I can't get it to save the 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 returns:
0 : First : First New
1 : Second : Second New
2 : Third : Third New

Why does this not save the new posted values for 'name' back to my XML doc, what am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怎会甘心 2024-10-11 16:09:21

你陷入了循环。

这意味着每次循环返回到另一个时,$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++;
}

You're in a loop.

This mean each time the loop comes back to another point $key and $old get their respective new values.

I guess that's what you're trying to achieve (but I'm not you're sure I got your goal here)

foreach($objXML->xpath('/root/gallery/@name') as $key => $value){
    $new = $_POST['name'][$key];
    echo "$key : $old : $new<br />\n";
    $old = $value;
}

From your comment :

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++;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文