in reply to XML::Twig how to find a parent's attribute

$elt->parent('p[@conref != ""]')
#!perl use strict; use XML::Twig; my $xml = do { local $/; <DATA> }; my $twig = new XML::Twig( twig_handlers =>{ li => \&li}, ); $twig->parse($xml); sub li { my ($t,$elt) = @_; print $elt->text; if ( $elt->parent('p[@conref != ""]') ){ print " yes\n"; } else { print " no\n"; } } __DATA__ <xml> <p conref="hello"> <ul> <li>Bob</li> <li>Mary</li> </ul> </p> <p conref=""> <ul> <li>Tom</li> <li>Susan</li> </ul> </p> </xml>
poj

Replies are listed 'Best First'.
Re^2: XML::Twig how to find a parent's attribute
by slugger415 (Monk) on Jul 26, 2014 at 01:03 UTC

    Thanks poj, though I should have mentioned, I won't always know that the ancestor is a p; it could be anything. Anyway to grab "whatever it is"?

      sub li { my ($t,$elt) = @_; my $e = $elt->parent('[@conref != ""]'); # p removed if ( defined $e ){ print $e->tag." ".$elt->text."\n"; } }
      poj