XML::Atom::Entry - Atom entry


XML-Atom documentation Contained in the XML-Atom distribution.

Index


Code Index:

NAME

Top

XML::Atom::Entry - Atom entry

SYNOPSIS

Top

    use XML::Atom::Entry;
    my $entry = XML::Atom::Entry->new;
    $entry->title('My Post');
    $entry->content('The content of my post.');
    my $xml = $entry->as_xml;
    my $dc = XML::Atom::Namespace->new(dc => 'http://purl.org/dc/elements/1.1/');
    $entry->set($dc, 'subject', 'Food & Drink');

USAGE

Top

XML::Atom::Entry->new([ $stream ])

Creates a new entry object, and if $stream is supplied, fills it with the data specified by $stream.

Automatically handles autodiscovery if $stream is a URI (see below).

Returns the new XML::Atom::Entry object. On failure, returns undef.

$stream can be any one of the following:

* Reference to a scalar

This is treated as the XML body of the entry.

* Scalar

This is treated as the name of a file containing the entry XML.

* Filehandle

This is treated as an open filehandle from which the entry XML can be read.

$entry->content([ $content ])

Returns the content of the entry. If $content is given, sets the content of the entry. Automatically handles all necessary escaping.

$entry->author([ $author ])

Returns an XML::Atom::Person object representing the author of the entry, or undef if there is no author information present.

If $author is supplied, it should be an XML::Atom::Person object representing the author. For example:

    my $author = XML::Atom::Person->new;
    $author->name('Foo Bar');
    $author->email('foo@bar.com');
    $entry->author($author);

$entry->link

If called in scalar context, returns an XML::Atom::Link object corresponding to the first <link> tag found in the entry.

If called in list context, returns a list of XML::Atom::Link objects corresponding to all of the <link> tags found in the entry.

$entry->add_link($link)

Adds the link $link, which must be an XML::Atom::Link object, to the entry as a new <link> tag. For example:

    my $link = XML::Atom::Link->new;
    $link->type('text/html');
    $link->rel('alternate');
    $link->href('http://www.example.com/2003/12/post.html');
    $entry->add_link($link);

$entry->get($ns, $element)

Given an XML::Atom::Namespace element $ns and an element name $element, retrieves the value for the element in that namespace.

This is useful for retrieving the value of elements not in the main Atom namespace, like categories. For example:

    my $dc = XML::Atom::Namespace->new(dc => 'http://purl.org/dc/elements/1.1/');
    my $subj = $entry->get($dc, 'subject');

$entry->getlist($ns, $element)

Just like $entry->get, but if there are multiple instances of the element $element in the namespace $ns, returns all of them. get will return only the first.

AUTHOR & COPYRIGHT

Top


XML-Atom documentation Contained in the XML-Atom distribution.

# $Id$

package XML::Atom::Entry;
use strict;

use XML::Atom;
use base qw( XML::Atom::Thing );
use MIME::Base64 qw( encode_base64 decode_base64 );
use XML::Atom::Person;
use XML::Atom::Content;
use XML::Atom::Util qw( first );

sub element_name { 'entry' }

sub content {
    my $entry = shift;
    if (my @arg = @_) {
        if (ref($arg[0]) ne 'XML::Atom::Content') {
            $arg[0] = XML::Atom::Content->new(Body => $arg[0], Version => $entry->version);
        }
        $entry->set($entry->ns, 'content', @arg);
    } else {
        return $entry->get_object($entry->ns, 'content', 'XML::Atom::Content');
    }
}

__PACKAGE__->mk_elem_accessors(qw( summary ));
__PACKAGE__->mk_xml_attr_accessors(qw( lang base ));

__PACKAGE__->_rename_elements('issued' => 'published');
__PACKAGE__->_rename_elements('modified' => 'updated');

# OMG 0.3 elements ... to be backward compatible
__PACKAGE__->mk_elem_accessors(qw( created ));

__PACKAGE__->mk_object_accessor( source => 'XML::Atom::Feed' );

1;
__END__