Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

SimpleXML: Saubere Loesung um einen XMLNode zu loeschen?

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 17.09.2008, 10:30

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

<root>
<class name="ABC">
..
</class>
<class name="ERX">
..
</class>
</root>

der komplette Node "ERX" mittels SimpleXML geloescht werden.
Meine bisherigen Versuche dies mit unset zu bewerkstelligen schlagen leider noch fehl?
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 17.09.2008, 10:41

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.

Meine wichtigsten Bookmarks zu dem Thema:
https://debuggable.com/posts/parsing-xm ... 5acbdd56cb
https://debuggable.com/posts/parsing-xm ... dacbdd56cb

Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 17.09.2008, 10:45

hm, das mit dem loeschen _muss_ einfach gehen --
bei dem dom zeug rollen sich mir die fussnaegel hoch, ich _will_ (noch) nicht ;)

habe einen funkt. workaround gefunden, der zumindest eine moeglichkeit schafft wenn man einen alten node durch neue inhalte ersetzen moechte:

1. zunaechst zu loeschenden node finden, darauf achten dass man eine referenz auf selbigen hat (also kein foreach verwenden!)

2. dann $myNode = new SimpleXMLElement('<class>...data...</class>');
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 17.09.2008, 10:59

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 ;-)
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 19.09.2008, 14:35

Naja, sauber ist aber definitiv anders...

Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 19.09.2008, 15:38

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 ;)
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag