Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: How to return two and more values by parsing XML with XML::Rules?

by Anonymous Monk
on Nov 06, 2012 at 10:11 UTC ( #1002449=note: print w/ replies, xml ) Need Help??


in reply to How to return two and more values by parsing XML with XML::Rules?

Your sample xml doesn't match your wanted data -- irritating


Comment on Re: How to return two and more values by parsing XML with XML::Rules?
Re^2: How to return two and more values by parsing XML with XML::Rules?
by vagabonding electron (Hermit) on Nov 06, 2012 at 10:36 UTC
    Sorry, I did not mention that I have run
    'Capacities_Outpatient_Clinic_Special' => 'pass',
    before the mentioned chunk of the script.
    Thank you for pointing that out.
    Apart from that this is a fragment of a script that actually runs (only with fields translated into English). The above rule should not affect the code fragment however, perhaps I overook another mismatch?
    Update
    It must be the result presentation that has to be adjusted in my fragment - it should be:
    - Outpatient_Services: AM11: 1 AM07: 1 AM04: 1
      I was referring to the yaml, and FWIW, ysh doesn't like that YAML, which I assume is supposed to be

      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 - {}
        Thank you very much!
        I noticed now ( but somewhat late :-) ) that your point was yaml output. I have corrected the output presentation in the original post and in the reply to your post.
        My main problem however ist that I need to represent the LK-Keys at the same hierarchy level as the AM-Keys. That is, I do need the Outpatient_Clinic_Special infos.
        Thank you again for your time I will try to build on your code.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002449]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (17)
As of 2015-07-01 15:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (8 votes), past polls