php中的xml删除项
我在php中有一个警告,但我不知道它是什么 代码是: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
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());
}
?>