Hello, I am praticing below XML file.
Based on where I find att id for bayking id 'kingtony' , I wanted to print out the entire element/att(and ID) and any text found from
<yahoo> to </yahoo>.(exception of bayqueen_list and its descendatns)...

I am having problem just print out one value... can someone take a look please?

use strict;
use warnings;

use XML::Twig;

my $xml = <<XML;
<foo>
     <yahoo V="bay">
         <bay_id>
             <value>1</value>
             <fact>yes</fact>
         </bay_id>
         <bay_seen>
             <value>10</value>
             <fact>no</fact>
         </bay_seen>
         <bay_overall value="disabled"/>
         <bayking_list>
             <bayking id="kingjames" country="usa" active="true">
                 <bayking type="dictator"/>
                 <bay_usage value="none"/>
                 <bayking_origin>
<bayking_origin_name value="ohio_usa" emmigrate="no">
                              <economy_status_previous value="very poor" />
                       </bayking_origin_name>
                 </bayking_origin>
             </bayking>
         </bayking_list>
         <bayqueen_list>
             <bayqueen id="queenliz" country="france" active="true">
                 <bayqueen type="dictator"/>
                 <bay_usage value="none"/>
                 <bayqueen_origin>
<bayqueen_origin_name value="ohio_usa" emmigrate="no"/>
                 </bayqueen_origin>
             </bayqueen>
         </bayqueen_list>
     </yahoo>
     <yahoo V="baz">
         <bay_id>
             <value>1000</value>
             <fact>yes</fact>
         </bay_id>
         <bay_seen>
             <value>50</value>
             <fact>no</fact>
         </bay_seen>
         <bay_overall value="disabled"/>
         <bayking_list>
             <bayking id="kingtony" country="Russia" active="true">
                 <bayking type="dictator"/>
                 <bay_usage value="none"/>
                 <bayking_origin>
<bayking_origin_name value="ohio_usa" emmigrate="no">
                              <economy_status_previous value="very poor" />
                       </bayking_origin_name>
                 </bayking_origin>
             </bayking>
         </bayking_list>
         <bayqueen_list>
             <bayqueen id="queensarah" country="japan" active="true">
                 <bayqueen type="dictator"/>
                 <bay_usage value="none"/>
                 <bayqueen_origin>
<bayqueen_origin_name value="ca_usa" emmigrate="no"/>
                              <economy_status_previous value="very poor" />
                              <previous marriage="no"/>
                 </bayqueen_origin>
             </bayqueen>
         </bayqueen_list>
     </yahoo>
</foo>
XML

my $t = XML::Twig->new
(
 twig_handlers => { '/foo/yahoo/bayking_list' => sub
     {
        my @bay = $_->children('bayking');
        foreach my $bay1 ( @bay ) {
            if ( $bay1->att('id' eq 'kingtony' ) ) {
# print all elements/att/value and text from <yahoo> to </yahoo> which contains kingtony but do NOT print out bayqueen
                    print $bay1->att('id') . "\n";
            }
        }
      }
  }
);

$t->parse ($xml);

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to