将带有外来字符的TCX(XML)文件导入R

时间:2019-02-27 20:18:45

标签: r utf-8 xml-parsing

我正在尝试读取一系列TCX文件(培训中心XML文件),其中包含来自一系列锻炼的gps点到R中进行分析。这些文件表明它们是用UTF-8编码的,但是其中一些在某些元数据字段中包含外来字符(例如ü)。我的脚本适用于仅具有标准拉丁字符的文件,但对包含它们的文件却无效。 如何导入这些文件?

我正在使用TrackeR软件包中的readTCX函数。

library(TrackeR) 
file <- "bad_example.tcx"
points_tcx <- readTCX(file.tcx)
# Error in doc_parse_file(con, encoding = encoding, as_html = as_html, options = options) : 
#   Input is not proper UTF-8, indicate encoding !
#  Bytes: 0xFC 0x6D 0x65 0x67 [9]

如果我将文件顶部附近的[Sümeg]更改为[Sumeg],则会读取同一文件

我愿意接受任何解决方案。
我认为所有令人反感的角色都将在同一个区块中。

bad_example.tcx

<?xml version="1.0" encoding="UTF-8"?> <TrainingCenterDatabase creator="Smashrun"     xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd"     xmlns:ns5="http://www.garmin.com/xmlschemas/ActivityGoals/v1"     xmlns:ns3="http://www.garmin.com/xmlschemas/ActivityExtension/v2"     xmlns:ns2="http://www.garmin.com/xmlschemas/UserProfile/v2"     xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns4="http://www.garmin.com/xmlschemas/ProfileExtension/v1">    <Activities>
       <Activity Sport="Running">
           <Notes><![CDATA[Sümeg]]></Notes>
           <Id>2018-01-18T07:38:00</Id>
           <Lap StartTime="2018-01-18T07:38:00.000Z">
               <TotalTimeSeconds>3705</TotalTimeSeconds>
               <DistanceMeters>11000</DistanceMeters>
               <MaximumSpeed>48.100113398866</MaximumSpeed>
               <Intensity>Active</Intensity>
               <TriggerMethod>Manual</TriggerMethod>
               <Track>
                   <Trackpoint>
                       <Time>2018-01-18T07:38:00.000Z</Time>
                       <Position>
                           <LatitudeDegrees>46.984227</LatitudeDegrees>
                           <LongitudeDegrees>17.277231</LongitudeDegrees>
                       </Position>
                       <AltitudeMeters>182.18</AltitudeMeters>
                       <DistanceMeters>0</DistanceMeters>
                       <Extensions>
                           <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
                               <Speed>0</Speed>
                           </TPX>
                       </Extensions>
                   </Trackpoint>
                   <Trackpoint>
                       <Time>2018-01-18T07:38:04.000Z</Time>
                       <Position>
                           <LatitudeDegrees>46.984227</LatitudeDegrees>
                           <LongitudeDegrees>17.277231</LongitudeDegrees>
                       </Position>
                       <AltitudeMeters>182.18</AltitudeMeters>
                       <DistanceMeters>0.11</DistanceMeters>
                       <Extensions>
                           <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
                               <Speed>0</Speed>
                           </TPX>
                       </Extensions>
                   </Trackpoint>
                   <Trackpoint>
                       <Time>2018-01-18T07:38:10.000Z</Time>
                       <Position>
                           <LatitudeDegrees>46.984159</LatitudeDegrees>
                           <LongitudeDegrees>17.277335</LongitudeDegrees>
                       </Position>
                       <AltitudeMeters>182.38</AltitudeMeters>
                       <DistanceMeters>11.11</DistanceMeters>
                       <Extensions>
                           <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
                               <Speed>1.81490912544873</Speed>
                           </TPX>
                       </Extensions>
                   </Trackpoint>
               </Track>
           </Lap>
       </Activity>    </Activities>

0 个答案:

没有答案