TigerZF
🌐Español

33.7. Modificación de estructuras Feed y Entry

La sintaxis natural de Zend_Feed se extiende a la construcción y modificación de feeds y entradas, además de su lectura. Puede convertir fácilmente sus objetos nuevos o modificados de nuevo en XML bien formado para guardarlos en un archivo o enviarlos a un servidor.

Ejemplo 33.5. Modificación de una entrada de feed existente

$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();

Esto generará una representación completa (incluye el prólogo <?xml ... >) en XML de la nueva entrada, incluyendo cualquier espacio de nombres XML necesario.

Tenga en cuenta que lo anterior funcionará incluso si la entrada existente aún no tiene una etiqueta author. Puede utilizar tantos niveles de acceso con -> como desee antes de llegar a una asignación; todos los niveles intermedios se crearán automáticamente si es necesario.


Si desea utilizar un espacio de nombres distinto de atom:, rss:, u osrss: en su entrada, debe registrar el espacio de nombres con Zend_Feed usando Zend_Feed::registerNamespace(). Cuando modifica un elemento existente, este siempre mantendrá su espacio de nombres original. Al añadir un elemento nuevo, este irá al espacio de nombres predeterminado si no especifica explícitamente otro espacio de nombres.

Ejemplo 33.6. Creación de una entrada Atom con elementos de espacios de nombres personalizados

$entry = new Zend_Feed_Entry_Atom();
// id is always assigned by the server in Atom
$entry->title = 'my custom entry';
$entry->author->name = 'Example Author';
$entry->author->email = 'me@example.com';

// Now do the custom part.
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();