cvs commit: p5ee/App-Context/lib/App/Serializer Xml.pm XMLSimple.pm

[email protected] (Stephen Adkins)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
cvsuser     04/02/26 08:13:12

  Added:       App-Context/lib/App/Serializer Xml.pm
  Removed:     App-Context/lib/App/Serializer XMLSimple.pm
  Log:
  renamed XMLSimple.pm to Xml.pm
  
  Revision  Changes    Path
  1.1                  p5ee/App-Context/lib/App/Serializer/Xml.pm
  
  Index: Xml.pm
  ===================================================================
  
  #############################################################################
  ## $Id: Xml.pm,v 1.1 2004/02/26 16:13:12 spadkins Exp $
  #############################################################################
  
  package App::Serializer::Xml;
  
  use App;
  use App::Serializer;
  @ISA = ( "App::Serializer" );
  
  use strict;
  
  =head1 NAME
  
  App::Serializer::Xml - Interface for serialization and deserialization
  
  =head1 SYNOPSIS
  
      use App;
  
      $context = App->context();
      $serializer = $context->service("Serializer");  # or ...
      $serializer = $context->serializer();
      $data = {
          an => 'arbitrary',
          collection => [ 'of', 'data', ],
          of => {
              arbitrary => 'depth',
          },
      };
      $xml = $serializer->serialize($data);
      $data = $serializer->deserialize($xml);
      print $serializer->dump($data), "\n";
  
  =head1 DESCRIPTION
  
  A Serializer allows you to serialize a structure of data
  of arbitrary depth to a scalar and deserialize it back to the
  structure.
  
  The Xml serializer uses non-validated XML as the serialized
  form of the data.  It uses the XML::Simple class to perform
  the deserialization and serialization.
  
  =cut
  
  #############################################################################
  # CLASS
  #############################################################################
  
  =head1 Class: App::Serializer::Xml
  
   * Throws: App::Exception::Serializer
   * Since:  0.01
  
  =head2 Design
  
  The class is entirely made up of static (class) methods.
  However, they are each intended to be
  called as methods on the instance itself.
  
  =cut
  
  #############################################################################
  # CONSTRUCTOR METHODS
  #############################################################################
  
  =head1 Constructor Methods:
  
  =cut
  
  #############################################################################
  # new()
  #############################################################################
  
  =head2 new()
  
  The constructor is inherited from
  L<C<App::Service>|App::Service/"new()">.
  
  =cut
  
  #############################################################################
  # PUBLIC METHODS
  #############################################################################
  
  =head1 Public Methods:
  
  =cut
  
  #############################################################################
  # serialize()
  #############################################################################
  
  =head2 serialize()
  
      * Signature: $xml = $serializer->serialize($data);
      * Param:     $data              ref
      * Return:    $xml               text
      * Throws:    App::Exception::Serializer
      * Since:     0.01
  
      Sample Usage: 
  
      $context = App->context();
      $serializer = $context->service("Serializer");  # or ...
      $serializer = $context->serializer();
      $data = {
          an => 'arbitrary',
          collection => [ 'of', 'data', ],
          of => {
              arbitrary => 'depth',
          },
      };
      $xml = $serializer->serialize($data);
  
  =cut
  
  use XML::Simple;
  
  sub serialize {
      my ($self, $data) = @_;
      my ($xml, $xp);
  
      $xp = XML::Simple->new(
           keyattr => [ 'name', ],  # turn off 'id' and 'key'
           #keyattr => [],            # turn off 'name', 'id', and 'key'
           #forcearray => 1,
      );
  
      $xml = $xp->XMLout($data);
  
      return $xml;
  }
  
  #############################################################################
  # deserialize()
  #############################################################################
  
  =head2 deserialize()
  
      * Signature: $data = $serializer->deserialize($xml);
      * Signature: $data = App::Serializer->deserialize($xml);
      * Param:     $data              ref
      * Return:    $xml               text
      * Throws:    App::Exception::Serializer
      * Since:     0.01
  
      Sample Usage: 
  
      $context = App->context();
      $serializer = $context->service("Serializer");  # or ...
      $serializer = $context->serializer();
      $data = $serializer->deserialize($xml);
      print $serializer->dump($data), "\n";
  
  =cut
  
  sub deserialize {
      my ($self, $xml) = @_;
      my ($data, $xp);
  
      $xp = XML::Simple->new(
           keyattr => [ 'name', ],  # turn off 'id' and 'key'
           #keyattr => [],            # turn off 'name', 'id', and 'key'
           #forcearray => 1,
      );
  
      $data = $xp->XMLin($xml);
      #$data = $data->{anon} if ($data->{anon});
  
      return $data;
  }
  
  #############################################################################
  # serialized_content_type()
  #############################################################################
  
  =head2 serialized_content_type()
  
      * Signature: $serialized_content_type = $service->serialized_content_type();
      * Param:     void
      * Return:    $serialized_content_type   string
      * Throws:    App::Exception
      * Since:     0.01
  
      Sample Usage: 
  
      $serialized_content_type = $service->serialized_content_type();
  
  =cut
  
  sub serialized_content_type {
      'text/xml';
  }
  
  #############################################################################
  # dump()
  #############################################################################
  
  =head2 dump()
  
  This method is inherited from
  L<C<App::Serializer>|App::Serializer/"dump()">.
  
  =head1 ACKNOWLEDGEMENTS
  
   * Author:  Stephen Adkins <[email protected]>
   * License: This is free software. It is licensed under the same terms as Perl itself.
  
  =head1 SEE ALSO
  
  L<C<App::Context>|App::Context>,
  L<C<App::Service>|App::Service>
  
  =cut
  
  1;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.