После целого дня исследований и испытаний я наконец собрал решение, которое работает. Мне удалось получить все вложенные / повторные данные из «текстового» узла с помощью:
nested_data <- xml_text(xml_nodes(myxml,"text"))
Поскольку всегда было 3 «текстовых» поля в одном и том же порядке, я смог получить каждую третью запись с помощью:
team <- nested_data[seq(1,length(nested_data),3)]
action <- nested_data[seq(2,length(nested_data),3)]
half <- nested_data[seq(3,length(nested_data),3)]
Полный код для тех, кто находится в похожей лодке ...
library(rvest)
myxml <- read_xml("test_001.xml")
player <- xml_text(xml_nodes(myxml,"code")) #these don't repeat so are easy to grab and use
id <- xml_text(xml_nodes(myxml,"ID"))
time <- xml_text(xml_nodes(myxml,"start"))
nested_data <- xml_text(xml_nodes(myxml,"text")) #"text" is the actual data I want
team <- nested_data[seq(1,length(nested_data),3)] #grab every 3rd entry, starting at 1 position
action <- nested_data[seq(2,length(nested_data),3)] #grab every 3rd entry, starting at 2 position
half <- nested_data[seq(3,length(nested_data),3)] #grab every 3rd entry, starting at 3 position
pos_x <- xml_text(xml_nodes(myxml,"pos_x"))
pos_y <- xml_text(xml_nodes(myxml,"pos_y"))
df <- data.frame(id,time, half, team, player, action, pos_x, pos_y ) #final dataframe