HTML теги внутри XML через PHP - PullRequest
0 голосов
/ 01 февраля 2010

Я пытаюсь поместить строку 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>

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

1 Ответ

1 голос
/ 01 февраля 2010

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');
...