Объекты SimpleXML, CDATA и HTML - PullRequest
2 голосов
/ 18 ноября 2010

Я рву голову, пытаясь работать с «простым» XML впервые.Я создаю небольшую CMS для сайта на основе Flash, а содержимое хранится в файле XML.Моя проблема в том, что многие из полей копирования являются полями XML CDATA.с одной стороны, с помощью:

$xml = simplexml_load_file($file, 'SimpleXMLElement', LIBXML_NOCDATA);

я могу извлечь данные из этого узла, и метки CDATA будут удалены.Мои проблемы связаны с попыткой сохранить данные с помощью:

file_put_contents($file, $xml->asXML());

Проблемы:

a) теги интерпретируются с их эквивалентами сущностей HTML.Я не хочу, чтобы это случилось.Я понял, что это происходит из метода asXML, потому что даже если я сделаю html_entity_decode для данных $ _POST, они все еще преобразуются.

b) из-за вышеизложенного невозможно добавить теги CDATA, потому что они такжепреобразовать их символы.

SimpleXML до сих пор был для меня совсем не простым.Кто-нибудь когда-нибудь сталкивался с этим?

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

На самом деле мне показалось, что это именно то, что мне нужно было сделать:

Как сохранить DOMDocument от сохранения

Несмотря на то, что я пролил руководство наDOM api дал мне что-то новое, что я хотел бы изучить для будущего использования.

0 голосов
/ 18 ноября 2010

Раньше я не использовал simpleXML, но если ваша проблема заключается в том, что ваши данные сохраняются в формате XML, то Flash может изначально преобразовывать данные, закодированные в XMLE, в объекты XML. Вы можете загрузить свои данные и просто передать их новому объекту XML, например:

var ldr:URLLoader = new URLLoader( new URLRequest('./test.xml') ); ldr.addEventListener( Event.COMPLETE, handleLoaded );</p> <p>function handleLoaded( e:Event ) : void { var xml:XML = new XML(e.target.data); }

и у вас будет собственный Flash-объект XML.

Если вы используете AS2, вам нужно будет использовать объект LoadVars для загрузки данных, но вам нужно будет использовать событие onData (не onLoad), чтобы получить строку в кодировке XML и передать ее объект XML.

не уверен, решит ли это вашу проблему, но это может быть полезно.

...