Data-Edit-Xml
view release on metacpan or search on metacpan
lib/Data/Edit/Xml.pm view on Meta::CPAN
eval # Trap the die which signals success
{$node->by(sub # Traverse L<parse|/parse> tree in depth first order
{my ($o) = @_;
if ($o->at(@context)) # Does this node match the supplied context?
{$x = $o; # Success
die "success!"; # Halt the search
}
});
};
confess $@ if $@ and $@ !~ /success!/; # Report any suppressed error messages at this point
$x # Return node found if we are still alive
}
sub firstSibling($@) #CYU Return the first sibling of the specified B<$node> in the optional B<@context> else B<undef>
{my ($node, @context) = @_; # Node, array of tags specifying context.
return undef if @context and !$node->at(@context); # Not in specified context
my $p = $node->parent; # Parent node
$p->first # Return first sibling
}
#D2 Last # Find nodes that are last amongst their siblings.
lib/Data/Edit/Xml.pm view on Meta::CPAN
eval # Trap the die which signals success
{$node->downReverse(sub # Traverse L<parse|/parse> tree in depth first order
{my ($o) = @_;
if ($o->at(@context)) # Does this node match the supplied context?
{$x = $o; # Success
die "success!"; # Halt the search
}
});
};
confess $@ if $@ and $@ !~ /success!/; # Report any suppressed error messages at this point
$x # Return node found if we are still alive
}
sub lastSibling($@) #CYU Return the last sibling of the specified B<$node> in the optional B<@context> else B<undef>
{my ($node, @context) = @_; # Node, array of tags specifying context.
return undef if @context and !$node->at(@context); # Not in specified context
my $p = $node->parent; # Parent node
$p->last # Return last sibling
}
sub lastWhile($@) #U Go last from the specified B<$node> and continue deeper lastly as long as each last child node matches one of the specified B<@tags>. Return the deepest such node enco...
( run in 0.862 second using v1.01-cache-2.11-cpan-39bf76dae61 )