[PHP] XML (un)serializen met CDATA

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Hello,

Het gaat hier over de Pear class "XML_Serializer" (maar een andere oplossing is ook fine). De class geeft de mogelijkheid om CDATA als zodanig te parsen (met de optie XML_SERIALIZER_OPTION_CDATA_SECTIONS => [true | false]). Maar is het op de één of andere manier mogelijk om de (deze of een andere) serializer dit zelf uit te laten zoeken en waar nodig CDATA te plaatsen?

Een mogelijkheid zou bijvoorbeeld zijn om values in de array die als CDATA bedoeld zijn in de array te laten beginnen met een of andere "tag", zoals "###". Deze worden dan CDATA in de XML (na het hacken van de class).

Ik hoop dat iemand een betere oplossing heeft :)

Het maakt dus van...
PHP:
1
2
3
$xml = array();
$xml['item'][0] = 'foo';
$xml['item'][1] = '<p>bar</p>';

...het één...
XML:
1
2
3
4
<xml>
  <item><![CDATA[foo]]></item>
  <item><![CDATA[<p>bar</p>]]></item>
</xml>

..of het ander...
XML:
1
2
3
4
<xml>
  <item>foo</item>
  <item>&lt;p&gt;bar&lt;\p&gt;></item>
</xml>

...maar ik wil:
XML:
1
2
3
4
<xml>
  <item>foo></item>
  <item><![CDATA[<p>bar</p>]]></item>
</xml>

[ Voor 18% gewijzigd door X-Lars op 16-03-2006 13:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Dan bouw jezelf iets en geef je precies mee wanneer je CDATA wilt, of je laat het script vreemde tekens herkennen en past pas dan CDATA toe.

Acties:
  • 0 Henk 'm!

  • Stoppel
  • Registratie: Januari 2006
  • Laatst online: 20-09 15:35

Stoppel

een diedudabist

kan je hier niet een regular expression op "los"laten?

Beauty is in the eye of the beholder


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Stoppel schreef op donderdag 16 maart 2006 @ 17:59:
kan je hier niet een regular expression op "los"laten?
Op welk moment en op welke manier bedoel je dat? Om de XML door te lopen en binnen de CDATA te kijken wat geen CDATA is en dan de CDATA "tag" eromheen weghalen? Dat is wel omslachtig, maar wellicht bedoel je iets anders :)

Ik moet overigens wel de XML zowel kunnen serializen als unserializen.

[ Voor 4% gewijzigd door X-Lars op 17-03-2006 16:38 ]