HTML-теги внутри xml через php

Я пытаюсь поместить строку html внутри xml с помощью php следующим образом:

<?php
$xml_resource = new SimpleXMLElement('stuff.xml', 0, true);
$xml_resource->content = '<![CDATA[<u>111111111111111111111111111111111 text</u>]]>';
$xml_resource->asXML('stuff.xml');
?>

но по какой-то причине мой xml-файл выглядит так:

<?xml version="1.0"?> <data>
    <content id="pic1" frame="1" xpos="22" ypos="22" width="11" height="11">&lt;![CDATA[&lt;u&gt;111111111111111111111111111111111 text&lt;/u&gt;]]&gt;</content> </data>

Большое спасибо за вашу помощь, хорошие господа.


person Community    schedule 01.02.2010    source источник


Ответы (1)


SimpleXML не может создавать разделы CDATA. Однако простое присвоение HTML узлу должно быть функционально эквивалентно:

$xml_resource->content = '<u>111111111111111111111111111111111 text</u>';

Конечно, специальные символы будут экранированы, и результат будет эквивалентен использованию раздела CDATA.


Если вы абсолютно хотите создать разделы CDATA, вам придется использовать что-то вроде SimpleDOM для доступа соответствующий метод DOM.

include 'SimpleDOM.php';

$xml_resource = new SimpleDOM('stuff.xml', 0, true);
$xml_resource->content = '';
$xml_resource->content->insertCDATA('<u>111111111111111111111111111111111 text</u>');
$xml_resource->asXML('stuff.xml');
person Josh Davis    schedule 01.02.2010