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.