Witam !

Męczę się od kilku godzin z edytowaniem pliku xml o następującej strukturze

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <dzialy>
  3. .....
  4. <glowna header="Strona Główna"><![CDATA[treść do edycji]]></glowna>
  5. ....
  6. </dzialy>

Dałem kropki ponieważ plik będzie mial więcej wpisów lecz tylko ten muszę edytować.

Udało mi się zrobić skrypt pobierający treść do edycji korzystając z simplexml, udało mi się także napisać skrypt podmieniający zawartość <glowna> na ten wpisany w polu teksowym.

Niestety męczę się z tym CDATA, po użyciu tego skryptu:

  1. <?php
  2.  
  3. if (!$_POST) die("Błąd !");
  4. include "core.php";
  5.  
  6. $tresc = trim($_POST['tresc']);
  7.  
  8. $xml = simplexml_load_file("../dzialy.xml", 'SimpleXMLElement', LIBXML_NOCDATA);
  9.  
  10. $prefix = "<![CDATA[";
  11. $sufix = "]]>";
  12.  
  13. $xml->glowna = $prefix.$tresc.$sufix;
  14.  
  15. $xml->asXML("../dzialy.xml");
  16.  
  17. header("Location: edit.php?s=1");
  18.  
  19. ?>


zamiast < i > mam encje... Kombinowałem z DOMem też ale raz, że go nie ograniam, a dwa że aby użyć createCDATASection muszę użyć appedChild a nie chcę dodwać żadnego dziecka tylko podmienić wartość, kolejności wpisów też nie mogę zmienić.

Reansumując prosiłbym o pomoc w napisaniu skryptu który podmieniałby zawartość <glowna> i zachowałby bajer typu CDATA w niezmienionej formie. Najlepiej, gdyby skrypt nie zamieniał znaków typu < > & czy choćby 'enterów' na encje.


Proszę o pomoc i z góry dziękuję !