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/