Feed per DOM: removeChild
dmc
- php
Hallo erstmal,
ich würde gerne einen "entry" aus meinem Feed entfernen, was aber irgendwie nicht im File gespeichert wird. Der Ansatz:
$file="feed.xml";
$feed=new DOMDocument();
$feed->load($file);
foreach ($feed->firstChild->childNodes as $node)
{
$name=$node->nodeName;
if ($name=="entry")
{
$id=$node->getElementsByTagName('id')->item(0)->nodeValue;
if ($id==$target)
{
$xnode=$node->parentNode->removeChild($node);
$feed->saveXML();
}
}
}
Keine Errors, $xnode lässt sich testhalber problemlos ausgeben und liefert auch genau den Inhalt, aber speichern lässt sich das so nicht?
Was immer ich da auch versuche (z.B $feed->save($file)), die Datei bleibt unangetastet auch so
$xml=$feed->saveXML();
fopen("feed.xml","w");
fwrite($file,$xml);
Hat zufällig wer einen Tipp?
Greets
DMC
Hi,
Keine Errors, $xnode lässt sich testhalber problemlos ausgeben und liefert auch genau den Inhalt, aber speichern lässt sich das so nicht?
Nee, mit saveXML natürlich nicht.
Was immer ich da auch versuche (z.B $feed->save($file)), die Datei bleibt unangetastet auch so
$xml=$feed->saveXML();
fopen("feed.xml","w");
fwrite($file,$xml);
Hat zufällig wer einen Tipp?
Überprüfe, ob der Code der speichern soll auch tatsächlich zur Ausführung kommt. (In deinem Beispiel davor ist er ja von einer Bedingung abhängig.)
Und überprüfe das „unangetastet bleiben“ der Datei auch wirklich vernünftig – ggf. spielt dir da nur der Cache deines Browsers einen Streich.
MfG ChrisB
ReHi,
Überprüfe, ob der Code der speichern soll auch tatsächlich zur Ausführung kommt. (In deinem Beispiel davor ist er ja von einer Bedingung abhängig.)
Da ich über $xnode (also via foreach ($xnode->childNodes...) den zu löschenden Inhalt nochmal ausgeben kann, gehe ich davon aus, dass die Ausführung gegeben ist.
Und überprüfe das „unangetastet bleiben“ der Datei auch wirklich vernünftig – ggf. spielt dir da nur der Cache deines Browsers einen Streich.
Klaro- direktes Editieren der XML-Datei zeigt, dass alles beim Alten bleibt.
Trotzdem könntest du recht haben, dass die Datei sehr wohl "angetastet" wird. Das ergäbe dann aber wohl das Mysterium, dass
$xnode=$node->parentNode->removeChild($node);
Zwar einen funktionstüchtigen $xnode liefert, aber nichts löscht. Tja...
(Habe übrigens auch schon versucht, vorher noch die childNodes zu löschen, hat aber auch nix gebracht).
Greets
DMC