START SomeApp app_name QC 10.10.24.56 somehost.domain_name.tld STOP SomeApp2 instance_name QC 172.16.24.56 somehost.domain_name.tld GET_INFO #### 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"; #### $perl newxmltest.pl request: action_request: action: instance_information: application_type: application_name: environment: application_host_ip: application_host_name: request: action_request: action: instance_information: application_type: application_name: environment: application_host_ip: application_host_name: request: info_request: action: XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element XML::LibXML::Element Context node set as |instruction_request| XML::LibXML::NodeList Size of action requests is 22 String value of action requests is " START SomeApp app_name QC 10.10.24.56 somehost.domain_name.tld STOP SomeApp2 instance_name QC 172.16.24.56 somehost.domain_name.tld GET_INFO " To literal of action requests is " START SomeApp app_name QC 10.10.24.56 somehost.domain_name.tld STOP SomeApp2 instance_name QC 172.16.24.56 somehost.domain_name.tld GET_INFO " To literal of action requests is "XML::LibXML::Element=SCALAR(0x81c770)" To element name is "action" To node value is "START" ----------------------------------------------------------- Trying to get the requests directly with an XPath expression ... ----------------------------------------------------------- XML::LibXML::NodeList Size of action requests is 0 String value of action requests is "" To literal of action requests is "" Use of uninitialized value in concatenation (.) or string at newxmltest.pl line 127. To literal of action requests is "" Can't call method "nodeName" on an undefined value at newxmltest.pl line 129.