我正在尝试将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