Im Web schwirren teilweise sehr skurrile Loesungsvorschlaege herum um aus einem XML Dokument mittels einem Potpouri einfach nur einen Knoten zu loeschen.
Klar, SimpleXML ist wohl mehr fuer das Lesen von XML gedacht. Dennoch wuerde ich gerne mit SimpleXML - und am besten nur damit , da das DOM Geraffel doch recht versionsspezifisch sich teilweise ganz anders verhalten kann - einen XML Node loeschen.
Erkennungsmerkmal kann ein bestimmtes Attribut sein. Z.B. soll aus
Nicht vorgesehen, geht also nicht. Da kommste um die DOM-Funktionen nicht herum. Ist aber nicht so kompliziert und mit PHP5 sollte das auch immer gleich funktionieren.
Das Loeschen scheint doch mit unset zu funktionieren (sicherstellen dass man wirklich eine Referenz auf den richtigen Node hat!), sicherheitshalber kann man es so machen:
$xml->class[$i] = null; // deletes inner childs only [just optionally]
unset($xml->class[$i]); // deletes node but inserts blank line?
Nachteil dieser Loesung ist aber dass man bevor man das XML wieder speichert man gut bedient ist leerzeilen zu loeschen, denn offensichtlich wird an der stelle des geloeschten Nodes sonst eine Leerzeile entstehen was CRC-Pruefungen ob sich an der Datei was inhaltsmaessig geaendert hat sonst immer sagt : ja
es ist zugegeben unschoen, aber ich finde das hin- und her zwischen dom und simplexml auch nicht gerade schoener (es ist sogar langsamer). vor allem ist das verhalten der dom implementierung sehr php-versionsabhaengig (man bedenke die wartung!). aber jedem wie es ihm/ihr/es gefaellt