使用jQuery删除XML节点

我想知道是否有人可以帮助我。

我把这个页面放在一起,允许用户查看他们上传图像的图库。

在初始上载时,物理图像保存在以下文件结构中: UploadedFiles/userid/locationid/image以及UploadedFiles/userid/locationid/image的细节(即描述等)保存在名为files.xml的xml文件中,该文件与物理目录位于同一目录中图片。

我现在正致力于允许用户删除这些图像。

通过每个图像下面的删除图标,我很乐意在一些帮助下将以下成功删除物理图像放在一起。

‘删除图标Onclick事件’

  Galleria.ready(function() { this.$('thumblink').click(); $(".galleria-image").append( ""); $(".btn-delete").live("click", function(){ var img = $(this).closest(".galleria-image").find("img"); // send the AJAX request $.ajax({ url : 'delete.php', type : 'post', data : { image : img.attr('src') }, success : function(){ alert('Deleting image... '); img.parent().fadeOut('slow'); } }); return false; }); });  

原创’delete.php’

  

更新了’delete.php’

 load('files.xml'); $thedocument = $doc->documentElement; $list = $thedocument->getElementsByTagName('files'); $nodeToRemove = null; foreach ($list as $domElement){ $attrValue = $domElement->getAttribute('file_name'); if ($attrValue == 'image') { $nodeToRemove = $domElement; } } if ($nodeToRemove != null) $thedocument->removeChild($nodeToRemove); echo $doc->saveXML(); ?> 

我遇到的问题是从xml文件中删除xml节点。 我在下面提供了XML文件的摘录。

   -    

我已经做了很多关于如何解决这个问题的研究,发现jQuery有自己的命令即jQuery.remove ,我认为它可以删除节点。 在简短的教程之后,我在“Onclick Event”脚本的末尾添加了以下内容:

 var doc = $(files.xml); doc.find('file_name:src').remove(); 

不幸的是,虽然我没有收到特定的错误,但是没有从文件中删除该节点。 在XML方面,我是一个完全的初学者,所以也许我太简单了。

我只是想知道有人可以看看这个,让我知道我哪里出错了。

非常感谢和问候

这是因为JavaScript(JQuery)在内存中加载XML DOM,然后在删除节点时,它会从内存中的xml doc(对象)中删除。

它不会从物理XML文件中删除。

JS在沙箱浏览器环境中运行,无法更改系统上的本地文件。 如果你试图从远程服务器加载xml,那么这是一个非常糟糕的主意。

来自远程服务器的XML文件作为临时文件下载,然后当您再次加载XML时,将创建内存中的DOM并从中删除该节点。

因此,如果您希望更改实际文件,则需要使用AJAX并向服务器发送一些HTTP请求以对物理文件执行相同操作。

更新

查看本教程http://www.phpeveryday.com/articles/PHP-XML-Removing-Node-P415.html

并尝试在delete.php中加载xml文件并从中删除相应的节点,然后将此xml保存回原始文件,该文件将被覆盖。