Я пытаюсь преобразовать файл XML в фрейм данных, готовый для помещения в файл CSV.К сожалению, я не могу включить несколько нижних уровней.
Строго урезанная версия этого файла:
<Products Count="14790" >
<Product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FundCode>MyCompany</FundCode>
<HospitalCover BasedOnID="">
<HospitalTier>SilverPlus</HospitalTier>
<Age Available="true" AvailableTransfer="true" />
<MedicalServices>
<MedicalService Title="Item1" Cover="Covered" />
<MedicalService Title="Item2" Cover="NotCovered" />
</MedicalServices>
</HospitalCover>
</Product>
</Products>
Ниже приведен наиболее успешный код, но яне знаю, как детализировать XML для получения данных с более низких уровней, в настоящее время он просто группирует данные со следующего более низкого уровня в один столбец.
xmlfile <- xmlTreeParse("test_import.xml")
topxml <- xmlRoot(xmlfile)
head(topxml)
topxml <- xmlSApply(topxml,
function(x) xmlSApply(x, xmlValue))
xml_df <- data.frame(t(topxml),
row.names=NULL)
xml_df <- apply(xml_df,2,as.character)
write.csv(xml_df, "test_export.csv")
- самый близкий из имеющихся у меня
Я пытался xpath попытаться вручную сопоставить столбцы с определенными тегами, но я также не нашел элементов
> a <- read_xml("test_import.xml")
> xml_find_all(a, xpath = "//Product")
{xml_nodeset (0)}
Я хотел бы иметь вместе с ними фрейм данныхстроки:
FundCode HospitalTier Age Available AvailableTransfer Item1 Item2
MyCompany SilverPlus True True Covered NotCovered