воскресенье, 16 сентября 2012 г.

Контент HTML в XML

Как уже известно в PHP 5 разработчики очень большое внимание уделили методам работы с SimpleXML.
Столкнувшись с задачей чтения XML файла с HTML-контентов потерялись в поисках, хотя ответ лежал практически на поверхности.
Представляем самый простейший способ чтения из XML файлов HTML-содержимого, что может быть полезно при разработке мини-сайтов, создании сайтов-визиток без использования баз данных MySQL.

Код XML файла, где расположен список элементов, например новости или статьи, выглядит очень просто:

<?xml version="1.0" encoding="UTF-8"?>
<document>
<page id="1">
<title>Заголовок 1</title>
<createdon>12.09.2012</createdon>
<anonce>
<![CDATA[
<p>Описание <strong>красочное</strong> в тегах и со <a href="http://www.ddlab.ru">ссылками</a></p>
]]>
</anonce>
<content></content>
</page>
<page id="2">
<title>Заголовок 2</title>
<createdon>05.09.2012</createdon>
<anonce>
<![CDATA[
<p>Описание <strong>красочное</strong> в тегах и со <a href="http://www.ddlab.ru">ссылками</a></p>
]]>
</anonce>
<content></content>
</page>
</document>

Все дело заключается в тегах <![CDATA [ ... ]]>, внутрь которых можно поместить абсолютно любое содержимое, главное при этом следить, чтобы в контенте не появилась последовательность типа ]]>, т.к. она завершит разбор XML некорректно.
При этом код вывода общего списка элементов:
<ul>
<?php
foreach ($xml->page as $page): ?>
<li>
<strong><a href="/info.php?id=<?=$page['id']?>"><?=$page->title?></a></strong>
<span><?=$page->createdon?></span>
<span class="anonce"><?=$page->anonce?></span>
</li>
<?php
endforeach;
?>
</ul>
А код вывода конкретного элемента с ID = 1 следующий:
 <?php
foreach ($xml->page as $page):
if($page['id'] == $itemID): ?>
<h1 style="color: black"><?=$page->title?></h1>
<?=$page->content?>
<br />
<?php
endif;
endforeach;
?>
Это все хитрости :)

Комментариев нет:

Отправить комментарий