in reply to Re^2: How to return two and more values by parsing XML with XML::Rules?
in thread How to return two and more values by parsing XML with XML::Rules?
ysh > --- yaml> Outpatient_Services: yaml> Outpatient_Service: yaml> - AM11: 1 yaml> - AM07: 1 yaml> - AM04: 1 yaml> ... $VAR1 = { 'Outpatient_Services' => { 'Outpatient_Service' => [ { 'AM11' => '1' }, { 'AM07' => '1' }, { 'AM04' => '1' } ] } };
This is what I came up with, which took waaay too long, the rules are hard to remember
#!/usr/bin/perl -- use strict; use warnings; use XML::Rules; use Data::Dump qw/ dd /; my $ta = XML::Rules->new( qw/ stripspaces 8 /, rules => { 'Outpatient_Services' => 'no content', 'Outpatient_Service' => 'as array no content', #~ 'Outpatient_Clinic' => 'content by AM_Key', 'Outpatient_Clinic' => sub { #~ $rule->( $tag_name, \%attrs, \@context, \@parent_data, $parser) #~ my ($tagname, $attrHash, $contexArray, $parentDataArray, $parser) = + @_; my $amk = $_[1]->{AM_Key} ; return unless $amk; { $amk => 1 }; }, #~ _default => sub { $_[0] => $_[1]->{_content} }, _default => 'content', 'Outpatient_Clinic_Special' => undef, }, ); my $ref = $ta->parsefile( 'pm1002448.xml' ); dd $ref; use YAML(); print YAML::Dump( $ref); __END__ { Outpatient_Services => { Outpatient_Service => [ { AM01 => 1 }, { AM01 => 1 }, { AM02 => 1 }, {}, { AM04 => 1 }, {}, ], }, } --- Outpatient_Services: Outpatient_Service: - AM01: 1 - AM01: 1 - AM02: 1 - {} - AM04: 1 - {}
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: How to return two and more values by parsing XML with XML::Rules?
by vagabonding electron (Curate) on Nov 06, 2012 at 11:36 UTC | |
by Anonymous Monk on Nov 06, 2012 at 11:45 UTC | |
by vagabonding electron (Curate) on Nov 06, 2012 at 12:06 UTC |