我创建了一个表单,我正在通过该表单上传图像,我在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"> </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>
答案 0 :(得分:2)
通过使用SimpleXMLElement的addChild
方法,您想要添加新的子项。
使用当前的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', '...');
// ...
答案 1 :(得分:1)
http://www.php.net/manual/en/simplexmlelement.addchild.php
添加一个新的子元素: $ document-&gt; body-&gt; addChild('sliderimage',$ sliderimagename);
<body>
<title>changeBg</title>
<imagename>B4.jpg</imagename>
<sliderimage>First</sliderimage>
<sliderimage>Second</sliderimage>
</body>
但是,您应该更改xml以指示有一组可用的项目
<body>
<title>changeBg</title>
<imagename>B4.jpg</imagename>
<sliderimages>
<image>First</image>
<image>Second</image>
</sliderimages>
</body>