2013-02-26 75 views
3

我有一个XML结构,这样的删除特定XML子节点:如何根据自己的价值

<document> 
    <sliderimage> 
     <images>click.bmp</images> 
     <images>error_inotherpluginupload.JPG</images> 
     <images>dddd.jpg</images> 
     <images>Sunset123.jpg</images> 
     <images>Water lilies.jpg</images>  
    </sliderimage> 
</document> 

而且我展示这些画面是这样的:

This is how I'm showing the images

代码为取得图像,你可以看到这里:

<?php 
    $usernmeforxml = $_SESSION['username']; 
    $xmlpath = SITE_URL . "xml/" . $usernmeforxml . "/test.xml"; 
    $xml = simplexml_load_string(file_get_contents($xmlpath)); 
    $sliderimagesinner = $xml->sliderimage->images; 
    $imagenum = count($sliderimagesinner); 
?> 
</br> 
<?php 
    for ($i = 0; $i < $imagenum; $i++) 
    { 
?> 
    <a class="thumbnail" href="#thumb"> 
     <img src="../slider_images/<?php 
      echo $sliderimagesinner[$i]; 
     ?>" width="120" height="70" /> 
     <span> 
      <img src="../slider_images/<?php 
       echo $sliderimagesinner[$i]; 
      ?>" width="500" height="350" /> 
     </span> 
    </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<?php 
    } 
?> 

现在我想删除图片的广告在我的图像上点击“删除”按钮。点击时,应从上述XML文件中删除该图像节点。

所有的东西都是动态的,所以如果有人能帮我解决这个问题,那将会非常有帮助。

+0

不是一个真正的答案,因为我不知道如何解决这个问题,但是如果我遇到了这个问题,我会开始在PHP的DOM类中寻找解决方案,其中包括一个DOMXQuery类。应该可以使用XQuery来查找满足特定条件的节点 – GordonM 2013-02-26 07:17:23

+1

是否可以更改结构以为每个图像添加id属性?这将使删除操作更不明确。 – 2013-02-26 08:02:52

+0

@GordonM没有'DOMXQuery',但'DOMXPath'就够了。 – 2013-02-26 09:15:49

回答

3
$usernmeforxml=$_SESSION['username']; 
$xmlpath=SITE_URL."xml/".$usernmeforxml."/test.xml"; 
$xml = simplexml_load_file($xmlpath); 
if($_GET['remove'] == 'true') { 
    $myValue = $_GET['file']; 
    $xel_array = $xml->xpath("//images[text()='" . $myValue . "']"); 
    //edited - forgot to double [0] 
    unset($xel_array[0][0]); 
    file_put_contents($xmlpath, $xml->asXML()); 
} 

和像

<a href="_your_page.php?remove=true&file=your_file_name">remove</a> 

链接应该做的伎俩。

+0

就像我用我的查询在functions.php,所以在这里在href我必须把这样的东西 remove 2013-02-26 07:43:07

+0

您可以将代码添加到当前文件的顶部并用slider.php替换your_page.php或者你的文件被调用的名称,your_file_name替换为xml的名字......例如:Water lilies.jpg。由于您的文件可能包含需要转义的字符,因此您可能需要使用urlencode和urldecode。 – user1452962 2013-02-26 07:54:27

+0

非常感谢好友,它工作。 – 2013-02-26 09:11:31