如何根据特定XML子节点的值删除它们

时间:2013-02-26 07:11:59

标签: php javascript 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文件中删除该图像节点。

所有事情都是动态的,所以如果有人可以帮我解决这个问题会非常有帮助。

1 个答案:

答案 0 :(得分: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>

应该这样做。