<sect1 id="zend.feed.modifying-feed">
    <title>Изменение структуры лент и их сообщений</title>

    <para>
        Естетственный синтаксис <code>Zend_Feed</code> используется для создания
        и изменения лент и записей так же, как и для их чтения. Вы можете легко
        преобразовывать свои новые или измененные объекты обратно в
        синтаксически корректный XML для сохранения в файл или отправки серверу.
    </para>

    <example id="zend.feed.modifying-feed.example.modifying">
        <title>Изменение существующего сообщения в ленте</title>
        <programlisting language="php"><![CDATA[
$feed = new Zend_Feed_Atom('http://atom.example.com/feed/1');
$entry = $feed->current();

$entry->title = 'This is a new title';
$entry->author->email = 'my_email@example.com';

echo $entry->saveXML();
]]>
        </programlisting>
        <para>
            Это выведет полное (включая вступление
            <code>&lt;?xml ... &gt;</code>) XML-представление
            новой публикации, включающее в себя необходимые пространства имен
            XML.
        </para>
        <para>
            Обратите внимание на то, что вышеприведенный код будет работать
            даже если существующая запись не имеет тег
            <code>&lt;author&gt;</code>. Для присвоения вы можете использовать
            столько уровней доступа через <code>-&gt;</code>, сколько
            для получения; все промежуточные уровни будут созданы автоматически,
            если необходимо.
        </para>
    </example>

    <para>
        Если вы хотите использовать в своих сообщениях пространство имен,
        отличное от <code>atom:</code>, <code>rss:</code> или
        <code>osrss:</code>, то вам нужно зарегистрировать его через
        <code>Zend_Feed</code>, используя
        метод <code>Zend_Feed::registerNamespace()</code>. Когда вы изменяете
        существующий элемент, он всегда будет сохранять свое исходное
        пространство имен. Когда вы добавляете новый элемент, то он будет
        включен в пространство имен по умолчанию, если не было указано явно
        другое пространство имен.
    </para>

    <example id="zend.feed.modifying-feed.example.creating">
        <title>Создание сообщения Atom с элементами в специальном пространстве имен</title>
        <programlisting language="php"><![CDATA[
$entry = new Zend_Feed_Entry_Atom();
// id уже присвоен сервером
$entry->title = 'my custom entry';
$entry->author->name = 'Example Author';
$entry->author->email = 'me@example.com';

// теперь выполнение специальной части
Zend_Feed::registerNamespace('myns', 'http://www.example.com/myns/1.0');

$entry->{'myns:myelement_one'} = 'my first custom value';
$entry->{'myns:container_elt'}->part1 = 'first nested custom part';
$entry->{'myns:container_elt'}->part2 = 'second nested custom part';

echo $entry->saveXML();
]]>
        </programlisting>
    </example>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
