PHP 简单 XML 删除所有子项

Too*_*ren 2 php xml children simplexml

我想在再次填充之前从我的 xml 文件中删除所有子项(或创建更新,但这似乎更难)。所以我所做的是

    $file = "data.xml";

$xml=simplexml_load_file($file);

$teller=0;
foreach( $entries as $entry ) {
foreach ($xml->xpath('//concerts') as $desc) {
    if($teller == 0)
    {
    $lol=$desc->children();
    unset($lol);
    }
    $concert = $desc->addChild( 'concert' );
    $concert->addChild( 'artist', array_shift( $entry ) );  
    $concert->addChild( 'location', array_shift( $entry ) );    
    $concert->addChild( 'date', array_shift( $entry ) );
    $teller++;
}    
}


file_put_contents($file, $xml->asXML()); 
Run Code Online (Sandbox Code Playgroud)

但这并不能消除任何东西,对我做错了什么有什么想法吗?

Gor*_*don 6

这是一种可能的解决方案(在线演示):

$xml = <<< XML
<?xml version='1.0' encoding='utf-8'?>
<concerts>
    <concert>
        <artist></artist>
        <date></date>
    </concert>
</concerts>
XML;

$concerts = simplexml_load_string($xml);

foreach ($concerts->xpath('/*/concert/*') as $child)
{
    unset($child[0]);
}

echo $concerts->asXML();
Run Code Online (Sandbox Code Playgroud)

标记此 CW 是因为我提供的 closevote 中给出了如何删除元素,并且此答案仅对此进行扩展。现在已经对此进行了编辑,显示了删除 SimpleXML 元素节点的自引用方法,如问题“在 SimpleXML for PHP 中删除具有特定属性的子项”的答案中所述,这也可能是重复的。