[R] Package XML: Parse Garmin *.tcx file problems

Duncan Temple Lang duncan at wald.ucdavis.edu
Wed Mar 30 23:09:42 CEST 2011


Hi Michael

 Almost certainly, the problem is that the document has a default namespace.
You need to identify the namespace in the XPath query.
xpathApply() endeavors to make this simple:

  xpathApply(doc2, "//x:TotalTimeSeconds", xmlValue, namespaces = "x")

I suspect that will give you back something more meaningful.

 The "x" in the query (x:TotalTimeSeconds) is mapped to x = URI
in namespaces and since the URI is not specified, we use the default
namespace on the root node of the document.  Some documents
don't have a default namespace, and then you can use the prefix on the root node
corresponding to the namespace of interest.

  D



On 3/30/11 1:15 PM, Folkes, Michael wrote:
> I'm struggling with package XML to parse a Garmin file (named *.tcx).
> I wonder if it's form is incomplete, but appreciably reluctant to paste
> even a shortened version.
> The output below shows I can get nodes, but an attempt at value of a
> single node comes up empty (even though there is data there.  
> 
> One question: Has anybody succeeded parsing Garmin .tcx (xml) files?
> Thanks!
> Michael
> _______________________
> 
>> doc2 = xmlRoot(xmlTreeParse("HR.reduced3.tcx",useInternalNodes = TRUE))
>> xpathApply(doc2, "//*", xmlName)
> [[1]]
> [1] "TrainingCenterDatabase"
> 
> [[2]]
> [1] "Activities"
> 
> [[3]]
> [1] "Activity"
> 
> [[4]]
> [1] "Id"
> 
> [[5]]
> [1] "Lap"
> 
> [[6]]
> [1] "TotalTimeSeconds"
> 
> 
>> xpathApply(doc2, "//TotalTimeSeconds", xmlValue)
> list()
>>
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list