use strict; use warnings; use XML::LibXML; use Data::Dumper; use XML::LibXML::XPathContext; use strict; use warnings; use XML::LibXML; use Data::Dumper; use XML::LibXML::XPathContext; ############################################################ ######## VARIABLE DECLARATION ######## ############################################################ my $file = '/Volumes/UserData/Users/dattanik/Programs/XML/test_xml.xml'; ############################################################ ######## MAIN PROGRAM ######### ############################################################ #---------------------------------------------------------- # Create a new parser. #---------------------------------------------------------- my $parser = XML::LibXML->new (); #---------------------------------------------------------- # Parse the XML document. #---------------------------------------------------------- my $dom = $parser->load_xml (location => $file); #print ref ($dom) , "\n"; # XML::LibXML::Document #---------------------------------------------------------- # Get the document root. #---------------------------------------------------------- my $root = $dom->getDocumentElement (); #print ref($root), "\n"; # XML::LibXML::Element #---------------------------------------------------------- # Set the context (current) node. #---------------------------------------------------------- $xpc->setContextNode($root); print "Context node set as |". $xpc->getContextNode->nodeName() . "|\n"; #---------------------------------------------------------- # Make sure you can access data. #---------------------------------------------------------- my $action_requests = $xpc->find('//*', $root); print ref ($action_requests) . "\n"; print 'Size of action requests is ' . $action_requests->size() . "\n"; print 'String value of action requests is "' . $action_requests->string_value() . "\"\n"; print 'To literal of action requests is "' . $action_requests->string_value() . "\"\n"; print 'To literal of action requests is "' . $action_requests->get_node(4) . "\"\n"; print 'To element name is "' . $action_requests->get_node(4)->nodeName (). "\"\n"; print 'To node value is "' . $action_requests->get_node(4)->textContent() . "\"\n"; #---------------------------------------------------------- # Get all action requests. # =====> THIS IS WHERE IT GETS FUNKY <========= #---------------------------------------------------------- print '-' x 80 . "\n"; print 'Trying to get the requests directly with an XPath expression ...' . "\n"; print '-' x 80 . "\n"; my $action_requests = $xpc->find('//request'); print ref($action_requests) . "\n"; print 'Size of action requests is ' . $action_requests->size() . "\n"; print 'String value of action requests is "' . $action_requests->string_value() . "\"\n"; print 'To literal of action requests is "' . $action_requests->string_value() . "\"\n"; print 'To literal of action requests is "' . $action_requests->get_node(4) . "\"\n"; print 'To element name is "' . $action_requests->get_node(4)->nodeName() . "\"\n"; print 'To node value is "' . $action_requests->get_node(4)->textContent() . "\"\n";