Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的xml删除项_Php_Xml - Fatal编程技术网

php中的xml删除项

php中的xml删除项,php,xml,Php,Xml,我在php中有一个警告,但我不知道它是什么 代码是: <?php session_start(); function clearfile(){ $usuarios= simplexml_load_file('../carrito/cart.xml'); $filename='../carrito/cart.xml'; $username = $_SESSION['un']; $length = count($usuarios->

我在php中有一个警告,但我不知道它是什么 代码是:

    <?php
    session_start();
    function clearfile(){
    $usuarios= simplexml_load_file('../carrito/cart.xml');
    $filename='../carrito/cart.xml';
    $username = $_SESSION['un'];
    $length = count($usuarios->carro);
     foreach ($usuarios->carro as $elemento){
      if($elemento->usuario==$username){
       for ($i=0; $i < $length; $i++) {
        if ($usuarios->carro[$i]->usuario==$username) {
         unset($usuarios->carro[$i]);
         break;
     }
    }
    file_put_contents($filename,$usuarios->saveXML());
    }
    }
    }
    ?>
其思想是删除用户的所有节点,例如,在使用用户名alex执行函数clearfile之后,输出应该是

    <?xml version="1.0"?>
    <info>
    <carro>
     <id>4</id>
     <usuario>Gera</usuario>
     <producto>Keep Calm</producto> 
     <Size>M</Size>
     <cantidad>1</cantidad>
     <precio>130</precio>
    </carro>
    <carro>
     <id>5</id>
     <usuario>Gera</usuario>
     <producto>Jaws</producto>
     <Size>M</Size>
     <cantidad>1</cantidad>
     <precio>120</precio>
    </carro>
    </info>

4.
杰拉
保持冷静
M
1.
130
5.
杰拉
大白鲨
M
1.
120

尝试使用Xpath查找用户名匹配节点的父节点,而不是使用simpleXML

Xpath返回结果后,循环遍历结果,转到父节点并删除该子节点,以删除整个相应的carro节点

<?php
session_start();

function clearfile() {

    $filename='../carrito/cart.xml';

    $xml = new DOMDocument();
    $xml->load($filename);
    $xpath = new Domxpath($xml);

    $username = $_SESSION['un'];
    $elements = $xpath->query("//carro/usuario[text()='".$username."']/..");

        if ($elements->length > 0) {
            foreach ($elements as $node) {
                $node->parentNode->removeChild($node);
            }
        }
    file_put_contents($filename,$xml->saveXML());
    }    

?>
load($filename);
$xpath=newdomxpath($xml);
$username=$\会话['un'];
$elements=$xpath->query(“//carro/usuario[text()=””“$username.”]/..”;
如果($elements->length>0){
foreach($元素作为$node){
$node->parentNode->removeChild($node);
}
}
文件内容($filename,$xml->saveXML());
}    
?>
    <?xml version="1.0"?>
    <info>
    <carro>
     <id>4</id>
     <usuario>Gera</usuario>
     <producto>Keep Calm</producto> 
     <Size>M</Size>
     <cantidad>1</cantidad>
     <precio>130</precio>
    </carro>
    <carro>
     <id>5</id>
     <usuario>Gera</usuario>
     <producto>Jaws</producto>
     <Size>M</Size>
     <cantidad>1</cantidad>
     <precio>120</precio>
    </carro>
    </info>
<?php
session_start();

function clearfile() {

    $filename='../carrito/cart.xml';

    $xml = new DOMDocument();
    $xml->load($filename);
    $xpath = new Domxpath($xml);

    $username = $_SESSION['un'];
    $elements = $xpath->query("//carro/usuario[text()='".$username."']/..");

        if ($elements->length > 0) {
            foreach ($elements as $node) {
                $node->parentNode->removeChild($node);
            }
        }
    file_put_contents($filename,$xml->saveXML());
    }    

?>