in reply to Re: XML::Parser Object Orientation problem
in thread XML::Parser Object Orientation problem
And now the code I use to call it:#!/perl/bin/perl #Practise shim form of xml parsing. package ShimPractise; use strict; use XML::Parser; sub new ($$$) { my $shimClass = $_[0]; my $shimData = { name => $_[1], number => $_[2], xmlAsScalar => $_[3], }; bless ($shimData, $shimClass); return $shimData; } sub parse() { my ($currentObject) = @_; my $parser = new XMLParser(Handlers => { Init => sub {$currentObject->handleDocumentInit (@_)}, Start => sub {$currentObject->handleStartTag (@_)},}); $parser->parse($currentObject->{xmlAsScalar}); my $returnString = ""; my $numTags = $currentObject->getNumber(); $returnString .= "Number of Tags: ".$numTags."<BR>\n"; my $tags = $currentObject->getName(); $returnString .= $tags."<BR>\n"; return $returnString; } sub setName($) { $_[0]->{name} = $_[1]; } sub setNumber($) { $_[0]->{number} = $_[1]; } sub getName() { return $_[0]->{name}; } sub getNumber() { return $_[0]->{number}; } sub handleDocumentInit() { my ($currentObject, $expat) = @_; $currentObject->setName("Tags: "); $currentObject->setNumber(0); } sub handleStartTag() { my ($currentObject, $expat, $element, %attrList) = @_; my $currentName = $currentObject->getName(); my $currentNumber = $currentObject->getNumber(); $currentObject->setName($currentName." ".$element); $currentObject->setNumber($currentNumber + 1); } 1;
my $shimmer = new ShimPractise("name", 0, "<Tag1><Tag2></Tag2><Tag3> +</Tag3></Tag1>"); my $shimString = $shimmer->parse();
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: XML::Parser Object Orientation problem
by GrandFather (Saint) on Sep 08, 2009 at 00:38 UTC |