PHP Innerhalb einer XML ein Tag finden und dort etwas ändern

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
652
Hi,

folgende Situation, ich habe eine input.xyz , innerhalb dieser steht viel kram, ich möchte nun folgendes anstellen:

Wenn das tag genau folgendes Tag vorkommt

Code:
<lable_def name="SpineLabel" x="100" y="200" z="300"></label_def>

Dann lösche die Attribute x und y, bei z soll von dem akuellen Wert 6 abgezogen werden.
Nun soll der gesamte Inhalt der input.xyz in eine output.xyz geschrieben werden, allerdings mit dem veränderten inhalt, dies wäre dann:

Code:
<egal></egal>
<lable_def name="SpineLabel" z="294"></label_def>
<lala></lala>


Habt ihr einen Plan wie man das umsetzt?

lg
 
Zuletzt bearbeitet:
Ich muss korriegeren, es handel sich nicht um eine XML Datei, der Inhalt ist nur ähnlich zu einer.
 
Ok also ich habe es nun geschafft, danke für den Hinweis.
Nun folgendes Problem:

Mit

Code:
$document->save('export/output.file');

speichere in den Inhalt, leider beinhaltet dieser immer

Code:
<?xml version="1.0" encoding="UTF-8"?>

in der ersten Zeile, ich möchte dies aber nicht, gibt es eine saubere Lösung dies zu verhindern bzw nicht zu tun?
 
Der spuckt halt ein xml aus bei der serialisierung. Für xml ist das spec. Was du vermutlich eher brauchst ist eine sgml-lib; das wird aber heute fast gar nicht mehr verwendet, weil xml es beinahe komplett verdrängt hat.
Deshalb wird dein aktueller Lösungsweg vermutlich das Beste sein, was du tun kannst. Wenn du eh pl bloß PHP verwendest kannst du ja in einem Post Processing Schritt immer die erste Zeile löschen. Lässt sich gut googlen.
 
ok danke, leider ergeben meine Suchergebnisse immer nur eine Ersetzung mit Hilfe von \n aber dies ja bei dem output ja gerade nicht der Fall
 
hemorieder schrieb:
ok danke, leider ergeben meine Suchergebnisse immer nur eine Ersetzung mit Hilfe von \n aber dies ja bei dem output ja gerade nicht der Fall
Nochmal fürs Verständnis: dich stört nur der xml root tag? Und der steht in einer eigenen Zeile? Dann lies die Datei zeilenweise in ein Array (!) ein und schreib ab dem zweiten Array Index dessen Inhalt in die neue Datei. Die Einzelschritte kannst du gut googlen.
 
Zurück
Oben