[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/site_perl/5.10.0/i586-linux-thread-multi/XML/Parser/Style/ -> Objects.pm (source)

   1  # $Id: Objects.pm,v 1.1 2003/08/18 20:20:51 matt Exp $
   2  
   3  package XML::Parser::Style::Objects;
   4  use strict;
   5  
   6  sub Init {
   7    my $expat = shift;
   8    $expat->{Lists} = [];
   9    $expat->{Curlist} = $expat->{Tree} = [];
  10  }
  11  
  12  sub Start {
  13    my $expat = shift;
  14    my $tag = shift;
  15    my $newlist = [ ];
  16    my $class = "${$expat}{Pkg}::$tag";
  17    my $newobj = bless { @_, Kids => $newlist }, $class;
  18    push @{ $expat->{Lists} }, $expat->{Curlist};
  19    push @{ $expat->{Curlist} }, $newobj;
  20    $expat->{Curlist} = $newlist;
  21  }
  22  
  23  sub End {
  24    my $expat = shift;
  25    my $tag = shift;
  26    $expat->{Curlist} = pop @{ $expat->{Lists} };
  27  }
  28  
  29  sub Char {
  30    my $expat = shift;
  31    my $text = shift;
  32    my $class = "${$expat}{Pkg}::Characters";
  33    my $clist = $expat->{Curlist};
  34    my $pos = $#$clist;
  35    
  36    if ($pos >= 0 and ref($clist->[$pos]) eq $class) {
  37      $clist->[$pos]->{Text} .= $text;
  38    } else {
  39      push @$clist, bless { Text => $text }, $class;
  40    }
  41  }
  42  
  43  sub Final {
  44    my $expat = shift;
  45    delete $expat->{Curlist};
  46    delete $expat->{Lists};
  47    $expat->{Tree};
  48  }
  49  
  50  1;
  51  __END__
  52  
  53  =head1 NAME
  54  
  55  XML::Parser::Style::Objects
  56  
  57  =head1 SYNOPSIS
  58  
  59    use XML::Parser;
  60    my $p = XML::Parser->new(Style => 'Objects', Pkg => 'MyNode');
  61    my $tree = $p->parsefile('foo.xml');
  62  
  63  =head1 DESCRIPTION
  64  
  65  This module implements XML::Parser's Objects style parser.
  66  
  67  This is similar to the Tree style, except that a hash object is created for
  68  each element. The corresponding object will be in the class whose name
  69  is created by appending "::" and the element name to the package set with
  70  the Pkg option. Non-markup text will be in the ::Characters class. The
  71  contents of the corresponding object will be in an anonymous array that
  72  is the value of the Kids property for that object.
  73  
  74  =head1 SEE ALSO
  75  
  76  L<XML::Parser::Style::Tree>
  77  
  78  =cut


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1