See the documentation of XML::LibXML::Node under findnodes. If you follow the advice given there, your XPath will work:
#!/usr/bin/perl
use warnings;
use strict;
use XML::LibXML;
my $file = '1832.tcx';
my $parser = XML::LibXML->new->parse_file($file);
my $xml = XML::LibXML::XPathContext->new; # No argum
+ent here!
$xml->registerNs('x',
'http://www.garmin.com/xmlschemas/TrainingCenterDatab
+ase/v2');
for my $key ($xml->findnodes('//x:Lap', $parser)) { # Provide
+the $parser here.
my $string = $key->findvalue('@StartTime'); # No $pars
+er needed, since attributes are namespaceless.
print "1\t$string\n";
}
my @X;
for my $node ($xml->findnodes('//x:Trackpoint', $parser)) { # Again, $
+parser as argument.
my $time = $xml->findvalue('x:Time', $node); # Context
+specified as argument.
push @X, $time;
}
print "@X\n";
Update: comments.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|