use XML::Simple;
use Data::Dumper;
my $xml = XMLin(\*DATA);
print Dumper $xml;
__DATA__
<ObjectType>
<AppObject>hello</AppObject>
<AppObjectField>gender</AppObjectField>
<valueTargetPair value="MALE" targetPo="Incoming 1" />
<valueTargetPair value="FEMALE" targetPo="Incoming 2" />
</ObjectType>
When run on a computer that has XML::Simple installed, you
should see something like:
$VAR1 = {
'AppObject' => 'hello',
'valueTargetPair' => [
{
'value' => 'MALE',
'targetPo' => 'Incoming 1'
},
{
'value' => 'FEMALE',
'targetPo' => 'Incoming 2'
}
],
'AppObjectField' => 'gender'
};
Now ... let's turn it into an object:
my $xml = XMLin(\*DATA);
bless $xml, $xml->{AppObject};
warn unless ref $xml eq 'hello';
Done. ;) But don't be fooled. $xml is still a reference to
an anonymous hash reference, it just also happens to "BE A"
'hello' object.
Now, let's run tadman's code on this (with a couple of
modifications), but this time i won't bother blessing it,
since there is no reason to for this simple example:
my $xml = XMLin(\*DATA);
foreach my $entry (@{$xml->{valueTargetPair}})
{
print "value=", $entry->{value}, $/;
print "targetPo=", $entry->{targetPo}, $/;
}
This prints:
value=MALE
targetPo=Incoming 1
value=FEMALE
targetPo=Incoming 2
Hope this convinces you to stick with parsers for parsing
XML. The work has not only already been done, it's been
tried and tested. ;)
jeffa
L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)
|