Zend_Feed-ModifyingFeed.xml 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <sect1 id="zend.feed.modifying-feed">
  2. <title>Изменение структуры лент и их сообщений</title>
  3. <para>
  4. Естетственный синтаксис <code>Zend_Feed</code> используется для создания
  5. и изменения лент и записей так же, как и для их чтения. Вы можете легко
  6. преобразовывать свои новые или измененные объекты обратно в
  7. синтаксически корректный XML для сохранения в файл или отправки серверу.
  8. </para>
  9. <example id="zend.feed.modifying-feed.example.modifying">
  10. <title>Изменение существующего сообщения в ленте</title>
  11. <programlisting language="php"><![CDATA[
  12. $feed = new Zend_Feed_Atom('http://atom.example.com/feed/1');
  13. $entry = $feed->current();
  14. $entry->title = 'This is a new title';
  15. $entry->author->email = 'my_email@example.com';
  16. echo $entry->saveXML();
  17. ]]>
  18. </programlisting>
  19. <para>
  20. Это выведет полное (включая вступление
  21. <code>&lt;?xml ... &gt;</code>) XML-представление
  22. новой публикации, включающее в себя необходимые пространства имен
  23. XML.
  24. </para>
  25. <para>
  26. Обратите внимание на то, что вышеприведенный код будет работать
  27. даже если существующая запись не имеет тег
  28. <code>&lt;author&gt;</code>. Для присвоения вы можете использовать
  29. столько уровней доступа через <code>-&gt;</code>, сколько
  30. для получения; все промежуточные уровни будут созданы автоматически,
  31. если необходимо.
  32. </para>
  33. </example>
  34. <para>
  35. Если вы хотите использовать в своих сообщениях пространство имен,
  36. отличное от <code>atom:</code>, <code>rss:</code> или
  37. <code>osrss:</code>, то вам нужно зарегистрировать его через
  38. <code>Zend_Feed</code>, используя
  39. метод <code>Zend_Feed::registerNamespace()</code>. Когда вы изменяете
  40. существующий элемент, он всегда будет сохранять свое исходное
  41. пространство имен. Когда вы добавляете новый элемент, то он будет
  42. включен в пространство имен по умолчанию, если не было указано явно
  43. другое пространство имен.
  44. </para>
  45. <example id="zend.feed.modifying-feed.example.creating">
  46. <title>Создание сообщения Atom с элементами в специальном пространстве имен</title>
  47. <programlisting language="php"><![CDATA[
  48. $entry = new Zend_Feed_Entry_Atom();
  49. // id уже присвоен сервером
  50. $entry->title = 'my custom entry';
  51. $entry->author->name = 'Example Author';
  52. $entry->author->email = 'me@example.com';
  53. // теперь выполнение специальной части
  54. Zend_Feed::registerNamespace('myns', 'http://www.example.com/myns/1.0');
  55. $entry->{'myns:myelement_one'} = 'my first custom value';
  56. $entry->{'myns:container_elt'}->part1 = 'first nested custom part';
  57. $entry->{'myns:container_elt'}->part2 = 'second nested custom part';
  58. echo $entry->saveXML();
  59. ]]>
  60. </programlisting>
  61. </example>
  62. </sect1>
  63. <!--
  64. vim:se ts=4 sw=4 et:
  65. -->