| XML-LibXML documentation | Contained in the XML-LibXML distribution. |
XML::LibXML::NodeList - a list of XML document nodes
An XML::LibXML::NodeList object contains an ordered list of nodes, as detailed by the W3C DOM documentation of Node Lists.
my $results = $dom->findnodes('//somepath');
foreach my $context ($results->get_nodelist) {
my $newresults = $context->findnodes('./other/element');
...
}
You will almost never have to create a new NodeList object, as it is all done for you by XPath.
Returns a list of nodes, the contents of the node list, as a perl list.
Returns the string-value of the first node in the list. See the XPath specification for what "string-value" means.
Returns the concatenation of all the string-values of all the nodes in the list.
Returns the node at $pos. The node position in XPath is based at 1, not 0.
Returns the number of nodes in the NodeList.
Equivalent to perl's pop function.
Equivalent to perl's push function.
Given a nodelist, appends the list of nodes in $nodelist to the end of the current list.
Equivalent to perl's shift function.
Equivalent to perl's unshift function.
Given a nodelist, prepends the list of nodes in $nodelist to the front of the current list.
| XML-LibXML documentation | Contained in the XML-LibXML distribution. |
# $Id$ # # This is free software, you may use it and distribute it under the same terms as # Perl itself. # # Copyright 2001-2003 AxKit.com Ltd., 2002-2006 Christian Glahn, 2006-2009 Petr Pajas # # package XML::LibXML::NodeList; use strict; use warnings; use XML::LibXML::Boolean; use XML::LibXML::Literal; use XML::LibXML::Number; use vars qw ($VERSION); $VERSION = "1.73"; # VERSION TEMPLATE: DO NOT CHANGE use overload '""' => \&to_literal, 'bool' => \&to_boolean, ; sub new { my $class = shift; bless [@_], $class; } sub new_from_ref { my ($class,$array_ref,$reuse) = @_; return bless $reuse ? $array_ref : [@$array_ref], $class; } sub pop { my $self = CORE::shift; CORE::pop @$self; } sub push { my $self = CORE::shift; CORE::push @$self, @_; } sub append { my $self = CORE::shift; my ($nodelist) = @_; CORE::push @$self, $nodelist->get_nodelist; } sub shift { my $self = CORE::shift; CORE::shift @$self; } sub unshift { my $self = CORE::shift; CORE::unshift @$self, @_; } sub prepend { my $self = CORE::shift; my ($nodelist) = @_; CORE::unshift @$self, $nodelist->get_nodelist; } sub size { my $self = CORE::shift; scalar @$self; } sub get_node { # uses array index starting at 1, not 0 # this is mainly because of XPath. my $self = CORE::shift; my ($pos) = @_; $self->[$pos - 1]; } *item = \&get_node; sub get_nodelist { my $self = CORE::shift; @$self; } sub to_boolean { my $self = CORE::shift; return (@$self > 0) ? XML::LibXML::Boolean->True : XML::LibXML::Boolean->False; } # string-value of a nodelist is the string-value of the first node sub string_value { my $self = CORE::shift; return '' unless @$self; return $self->[0]->string_value; } sub to_literal { my $self = CORE::shift; return XML::LibXML::Literal->new( join('', grep {defined $_} map { $_->string_value } @$self) ); } sub to_number { my $self = CORE::shift; return XML::LibXML::Number->new( $self->to_literal ); } sub iterator { warn "this function is obsolete!\nIt was disabled in version 1.54\n"; return undef; } 1; __END__