in reply to Re: Re: HoAoH
in thread hashes, arrays, and references... oh my
For example, let's run your sample XML through XML::Simple. I'll use the built-in DATA filehandle, so if you run this be sure you include it:
When run on a computer that has XML::Simple installed, you should see something like: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>
Now ... let's turn it into an object:$VAR1 = { 'AppObject' => 'hello', 'valueTargetPair' => [ { 'value' => 'MALE', 'targetPo' => 'Incoming 1' }, { 'value' => 'FEMALE', 'targetPo' => 'Incoming 2' } ], 'AppObjectField' => 'gender' };
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); bless $xml, $xml->{AppObject}; warn unless ref $xml eq 'hello';
This prints:my $xml = XMLin(\*DATA); foreach my $entry (@{$xml->{valueTargetPair}}) { print "value=", $entry->{value}, $/; print "targetPo=", $entry->{targetPo}, $/; }
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. ;)value=MALE targetPo=Incoming 1 value=FEMALE targetPo=Incoming 2
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)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: 3Re: HoAoH
by regan (Sexton) on Aug 05, 2003 at 23:51 UTC |