[PHP/XML] - CDATA correct wegschrijven naar XML?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Simpelweg gezegd wil ik HTML code op kunnen slaan in een XML bestand.
Dit doe ik met DomDocument gebruikmaken van CDATA.
Bij gewone tekst wordt dit prima opgeslagen, maar als ik
PHP:
1
"<![CDATA[" . $tekst . "]]>"
wil opslaan, dan worden de < en > vervangen door < en >

Hierdoor wordt de data niet meer goed uitgelezen uit de XML bestand.
Is er een manier om deze tekens gewoon als < en > op te slaan?

De (gestripte) gebruikte code:
PHP:
1
2
3
4
5
6
7
8
9
$dom = new DOMDocument();
$dom->load('xml/jobs.xml');

// juiste nodes worden opgehaald

$node->nodeValue = "<![CDATA[" . nl2br($_POST[$node->tagName]) . "]]>";

echo $dom->saveXML();
$dom->save('xml/jobs.xml');


Als ik echo $dom->saveXML(); gebruik, dan wordt wel gewoon < en > weergegeven, ook in de bron.

Acties:
  • 0 Henk 'm!

  • sanzut
  • Registratie: December 2006
  • Laatst online: 11:09

sanzut

It's always christmas time

Wat is het probleem precies?
wil opslaan, dan worden de < en > vervangen door < en >

Acties:
  • 0 Henk 'm!

Verwijderd

Ook ik snap je niet helemaal, maar ik zou iig eens naar deze functie kijken:
http://nl2.php.net/function.DomDocument-create-cdata-section

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sanzut schreef op zondag 02 maart 2008 @ 15:38:
Wat is het probleem precies?

[...]
lol, door & lt ; en & gt ; dus

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op zondag 02 maart 2008 @ 15:41:
Ook ik snap je niet helemaal, maar ik zou iig eens naar deze functie kijken:
http://nl2.php.net/function.DomDocument-create-cdata-section
Die heb ik ook geprobeert, maar die functie lijkt niet te werken:
code:
1
Call to undefined method DOMDocument::create_cdata_section()


Ik gebruik PHP 5.
Het probleem is dat bij het wegschrijven naar de XML niet het < -teken opgeslagen wordt, maar & lt ;

Bij het uitlezen wordt het dan niet meer als CDATA gezien, maar als een string.

Acties:
  • 0 Henk 'm!

Verwijderd

Dattie dat omzet naar entities is logisch, aangezien die karakters niet zijn toegestaan in xml. De genoemde functie zit blijkbaar niet officieel in php zie ik nu.

Volgensmij moet dit de oplossing zijn:
PHP:
1
$dom->load('xml/jobs.xml', LIBXML_NOCDATA);

[ Voor 23% gewijzigd door Verwijderd op 02-03-2008 15:58 ]

Pagina: 1