i want to remove all children from my xml file before i fill it up again (or create an update but that seemed alot harder). So what i did is
$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());
But this doesn't remove anything, any ideas on what i did wrong?
Here is one possible solution (online demo):
$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();
Marking this CW because how to delete elements is given in my supplied closevote and this answer only expands on this. And this now has been edited showing the self-reference method to delete a SimpleXML element node as outlined in an answer of the question "Remove a child with a specific attribute, in SimpleXML for PHP" which is also a possible duplicate.