小编Use*_*789的帖子

从 XML 中提取嵌套数据作为 R 中的数据框

我正在尝试从 XML 文件中提取数据,示例结构如下:

<pwx creator="PerfPRO" version="1.0">
<workout>
<athlete></athlete>
<title></title>
<sportType>Bike</sportType>
<cmt></cmt>
<device id=""></device>
<time>2016-01-19T08:01:00</time>
<summarydata>
    <beginning>0</beginning>
    <duration>3600.012</duration>
</summarydata>
<segment>
    <summarydata>
        <beginning>0</beginning>
        <duration>120</duration>
    </summarydata>
</segment>
<segment>
    <summarydata>
        <beginning>120</beginning>
        <duration>120</duration>
    </summarydata>
</segment>
<segment>
    <summarydata>
        <beginning>240</beginning>
        <duration>120</duration>
    </summarydata>
</segment>
Run Code Online (Sandbox Code Playgroud)

我想理想地作为数据帧访问“段”块(开始和持续时间)中的数据。有许多段块。

我已经尝试了很多东西,但似乎仍然无法提取它,我得到的只是一个空列表。这是我所做的(pwx 是文件名):

xmlData <- xmlInternalTreeParse(pwx, useInternalNodes = TRUE)
xmltop = xmlRoot(XMLdata)

d <- xpathSApply(doc = xmlData, path = "//pwx/workout/segment/summarydata/beginning", fun = xmlValue)
Run Code Online (Sandbox Code Playgroud)

我似乎也可以通过以下方式访问所有段:

segment <- xmltop[[1]]["segment"]
Run Code Online (Sandbox Code Playgroud)

但似乎无法获得值。我已经尝试了上面的许多变体。

非常感谢任何帮助,谢谢。

编辑:

> summary(xmlData)
$nameCounts

    cad        dist          hr         pwr      sample         spd  timeoffset   beginning 
   3274        3274        3274 …
Run Code Online (Sandbox Code Playgroud)

xml xmlnodelist r xml-parsing

0
推荐指数
1
解决办法
2092
查看次数

标签 统计

r ×1

xml ×1

xml-parsing ×1

xmlnodelist ×1