gpt4 book ai didi

php - 如何制作重复的xml节点并在其中保存不同的值而不覆盖

转载 作者:行者123 更新时间:2023-12-04 05:09:28 25 4
gpt4 key购买 nike

我已经创建了一个表单,并且正在通过该表单上传图像,并且我在 XML 文件中创建了一个节点,并且我想将图像的名称保存在该文件中,一切正常,但是每当我上传新图片时,它都会替换旧文件名,我想做的就是如果我再上传一张图片,那么它应该自动再创建一个节点,然后在那里动态添加图像名称而不替换旧的。

我使用的表格:

<div id="popup_box_slider_image" class="Add-Social-Media">
<!-- OUR PopupBox DIV-->
<a id="popupBoxClosesliderImage" class="ClosePopup"></a>
<form id="addEditFormSelectTemplate" action="" method="post" enctype="multipart/form-data" >
<p>Please upload a image to add to slider.</p>
<br />
<div style="width:100%; float:left;">
<br/>

上传图片:
<input type="file" name="sliderImage" id="slider" value="" style="width:180px;" class="field-box"  />
<br />
<span id="sliderImageErr">&nbsp;</span>
<br/>
<br/>
<br/>
<div align="left">
<input type="submit" name="SelectsliderImage" onClick="return validatesliderImage();" value="Update" style="background-color:#2D69A9 ; color:#FFFFFF ; padding-top:5px; padding-bottom:5px; padding-right:10px; padding-left:10px; border:none ; cursor:pointer ; border-radius:5px; " />
</div>
</div>
</form>
</div>

我使用的 PHP 代码:
$sliderimagename=$_FILES['sliderImage']['name'];
$xmlpath=SITE_URL."xml/".$_SESSION['username']."/test.xml";
$document=simplexml_load_file($xmlpath);
$document->body->sliderimage = $sliderimagename;
$document->asXML($xmlpath);
$path=SITE_URL."/slider_images/";
move_uploaded_file($_FILES['sliderImage']['tmp_name'],$path.$sliderimagename);

XML节点结构:
<body>
<title>changeBg</title>
<imagename>B4.jpg</imagename>
<sliderimage></sliderimage>
</body>

最佳答案

通过使用 addChild 要添加新子级的 SimpleXMLElement 的方法。
使用您当前的 xml 结构,它看起来像这样:

//...
$document=simplexml_load_file($xmlpath);
$new_image = $document->body->addChild('sliderimage', $_FILES['sliderImage']['name']);

这将导致这样的 xml 输出:
<body>
<title>changeBg</title>
<imagename>B4.jpg</imagename>
<sliderimage></sliderimage>
<sliderimage></sliderimage> <!-- this is the newly created node -->
</body>

但是您可能希望将您的 xml 文件重组为这样您就可以拥有更多级别的嵌套,例如:
<body>
<file> <!--- new top level tag to group the individual images -->
<title>changeBg</title>
<imagename>B4.jpg</imagename>
<sliderimage>old image</sliderimage>
</file>
<file>
<!--- ... -->
<sliderimage>new image</sliderimage>
</file>
</body>

在这种情况下,您只需调用 addChild在返回的节点上多次这样:
$new_file = $document->body->addChild('file'); // adding a new <file> node
$new_file->addChild('title', 'some title'); // adding more nodes inside the new <file> node
$new_file->addChild('imagename', '...');
// ...

关于php - 如何制作重复的xml节点并在其中保存不同的值而不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15062586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com