[Omaha.pm] Beginning working with XML::Twig.
Dan Linder
dan at linder.org
Mon Jun 6 15:14:25 PDT 2011
Ok, after finding that http://www.mirod.org/ is the only remaining XML::Twig
documentation site (after http://search.cpan.org/dist/XML-Twig/Twig_pm.slow),
I'm having trouble getting started.
(My XML file and some broken code is below.)
What I want to do is parse the XML file (around 300KB), and check the
"time_of_last_rate_dp" section of each "instance" to compare with the
check_starttime time in the beginning of the XML file.
I've got the simple code that can pull in the XML file, but I can't
determine how to "walk" through the XML tree. I thought I'd use the
"findnodes()" or "children()" subroutines, but that's not quite it...
Anyone want to throw me some additional subroutines I need to grok?
Thanks,
Dan
=== begin code ===
#!perl -w
#
# Required modules:
# XML::Twig - perl -MCPAN -e "install XML::Twig"
#
use strict;
use XML::Twig;
my $filename = shift || die ("Must supply an XML file to parse.");
my $twig = XML::Twig->new(
pretty_print => 'indented'
);
$twig->parsefile($filename);
my $root = $twig->root;
# twig->print works fine and regurgitates the whole XML file...
$twig->print;
# This doesn't work...the "$instance" is a HASH.
foreach my $instance ($root->children('instance')) {
printf ("Found: $instance\n");
}
=== end code ===
Here is a portion of the XML file:
=== begin XML ===
<collection_status>
<primary_server>10.10.10.11</primary_server>
<check_interval time="720">720</check_interval>
<check_starttime time="1307366104">06/06/11 09:15:04</check_starttime>
<check_endtime time="1307366110">06/06/11 09:15:10</check_endtime>
<instance>
<motype_id>42815</motype_id>
<motype_name>My MO Type name</motype_name>
<inst_id>119863</inst_id>
<device>
<device_id>545</device_id>
<device_name>My device name</device_name>
</device>
<agent>
<agent_id>10248</agent_id>
<agent_name>AABBCC (alpha)</agent_name>
<agent_status>Active</agent_status>
</agent>
<name>Test+%28GOOGLE%29</name>
<collect>TRUE</collect>
<config>300</config>
<time_of_last_rate_dp time="0">1969/12/31
16:00:00</time_of_last_rate_dp>
</instance>
<instance>
<motype_id>28451</motype_id>
<motype_name>HPUX FileSystem</motype_name>
<inst_id>25251</inst_id>
<device>
<device_id>34</device_id>
<device_name>NEHPX001</device_name>
</device>
<agent>
<agent_id>10033</agent_id>
<agent_name>NEHPX001</agent_name>
<agent_status>Active</agent_status>
</agent>
<name>%2Foracle%2FEPP%2Foraarch</name>
<collect>TRUE</collect>
<config>300</config>
<time_of_last_rate_dp time="0">1969/12/31
16:00:00</time_of_last_rate_dp>
</instance>
</collection_status>
=== end XML ===
--
***************** ************* *********** ******* ***** *** **
"Quis custodiet ipsos custodes?"
(Who can watch the watchmen?)
-- from the Satires of Juvenal
"I do not fear computers, I fear the lack of them."
-- Isaac Asimov (Author)
** *** ***** ******* *********** ************* *****************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/omaha-pm/attachments/20110606/e45e59ac/attachment-0001.html>
More information about the Omaha-pm
mailing list