Мне нужно извлечь определенные данные из XML, которые выглядят следующим образом (упрощено для краткости)
<Doc name="Doc1">
<Lists Count="1">
<List Name="List1">
<Points Count="3">
<Point Id="1">
<Tags Count ="1">"a"</Tags>
<Point Position="1" />
</Point>
<Point Id="2">
<Point Position="2" />
</Point>
<Point Id="3">
<Tags Count="1">"c"</Tags>
<Point Position="3" />
</Point>
</Points>
</List>
</Lists>
</Doc>
На выходе должен быть фрейм данных, соответствующий тегу и положению для каждого идентификатора точки.
Point Tag Position
1 1 a 1
2 2 <NA> 2
3 3 c 3
Я новичок в XML, я играл с пакетом xml2. До сих пор я мог извлекать каждую переменную отдельно, но поскольку некоторые точки могут не иметь данных тега, я не могу найти способ сопоставления между тремя параметрами.
> library(xml2)
> xml_data<-read_xml(...)
> xml_data %>% xml_find_all("//Point") %>% xml_attr("Id")
[1] "1" "2" "3"
> xml_data %>% xml_find_all("//Vertical") %>% xml_attr("Position")
[1] "1" "2" "3"
> xml_data %>% xml_find_all("//Tags") %>% xml_text()
[1] "\"a\"" "\"c\""