XML-FeedWriter

 view release on metacpan or  search on metacpan

lib/XML/FeedWriter.pm  view on Meta::CPAN

=item description

Feed description.

=back

You may specify as many channel elements as you wish.

Some minor elements may require hash/array references to specify extra attributes or child elements. Basically, a hash reference will be considered as child elements, and an array reference will be considered as a value of the elements plus a hash of...

XML::FeedWriter also accepts C<encoding> option ('utf-8' by default) and C<no_cdata> option, if you really care.

=head2 add_items

Adds items to the feed. Each item should be a hash reference, and characters are expected to be C<Encode::decode>d perl strings.

=head2 close

Closes several known tags such as 'rss' and 'channel'.

=head2 save

lib/XML/FeedWriter/Base.pm  view on Meta::CPAN

use strict;
use warnings;
use Carp;
use base qw( Class::Accessor::Fast Class::Data::Inheritable );
use Encode;
use DateTimeX::Web;
use XML::Writer;

__PACKAGE__->mk_accessors(qw(
  xml dtx
  _closed _output _encoding _use_cdata
));

__PACKAGE__->mk_classdata( _alias => {} );
__PACKAGE__->mk_classdata( _requires => {} );
__PACKAGE__->mk_classdata( _sort_order => {} );

sub new {
  my ($class, %options) = @_;

  delete $options{version};  # this is for XML::FeedWriter only.

lib/XML/FeedWriter/Base.pm  view on Meta::CPAN

  elsif ( ref $data eq 'HASH' ) {
    my %attr = %{ $data };
    my $value = delete $attr{value};
    $self->xml->dataElement( $key => $value, %attr );
  }
  else {
    $self->xml->dataElement( $key => $data );
  }
}

sub _cdata_element {
  my ($self, $key, $data) = @_;

  if ( $self->_use_cdata ) {
    $self->xml->cdataElement( $key => $data );
  }
  else {
    $self->_data_element( $key => $data );
  }
}

sub _datetime_element {
  my ($self, $key, $data) = @_;

  my $datetime;

lib/XML/FeedWriter/RSS20.pm  view on Meta::CPAN

  description => 8,
  creator     => 7,
  author      => 7,
  pubDate     => 6,
  guid        => 5,
});

sub _extra_options {
  my ($self, $options) = @_;

  my $no_cdata = delete $options->{no_cdata};

  $self->{_use_cdata} = !$no_cdata;
}

sub _root_element {
  my ($self, $modules) = @_;

  $self->xml->startTag( rss =>
    version         => '2.0',
    'xmlns:dc'      => 'http://purl.org/dc/elements/1.1/',
    'xmlns:content' => 'http://purl.org/rss/1.0/modules/content/',
    %{ $modules },

lib/XML/FeedWriter/RSS20.pm  view on Meta::CPAN

    my %item = $self->_canonize( $i );

    $self->xml->startTag('item');
    foreach my $key ( $self->_sort_keys( \%item ) ) {

      if ( $key eq 'pubDate' ) {
        $self->_datetime_element( $key => $item{$key} );
      }

      elsif ( $key eq 'description' ) {
        $self->_cdata_element( $key => $item{$key} );
      }

      elsif ( $key eq 'enclosure' ) {
        $self->_empty_element( $key => $item{$key} );
      }

      elsif ( $key eq 'category' ) {
        $self->_duplicable_elements( $key => $item{$key} );
      }



( run in 0.307 second using v1.01-cache-2.11-cpan-454fe037f31 )