У меня очень сложный xml-файл, который нужно проанализировать и представить в формате фрейма данных в R. Структура может быть похожа на следующий пример. Узлы не параллельны.
<Root>
<A>
<info1>a</info1>
<child>
<info2>b</info2>
<info3>c</info3>
<info4>d</info4>
</child>
<info5>e</info5>
</A>
<B>
<info6>f</info6>
<info7>g</info7>
</B>
</Root>
Придумываю код для разбора файла:
doc <- xmlParse(file="sample.xml", useInternal = TRUE)
rootnode <- xmlRoot(doc)
df1<-xmlToDataFrame(nodes=getNodeSet(rootnode, "//Root/A"))
df2<-xmlToDataFrame(nodes=getNodeSet(rootnode, "//Root/B"))
Final<-cbind.data.frame(df1,df2, all=TRUE)
Результат, возвращаемый как: (все узлы формы значений были сжаты вместе)
info1 child info5 info6 info7
a bcd e f g
Тем не менее, идеальный результат, который я хочу получить:
info1 info2 info3 info4 info5 info6 info7
a b c d e f g
Поскольку в xml-файле имеется большое количество узлов, аналогичное описанному выше, нецелесообразно вручную манипулировать кадром данных.
Я также пытаюсь изменить инструкцию пути на "// Root / A / child", тогда все значения в узле A и узле B будут пропущены.
Кто-нибудь может предложить решение этой проблемы. Заранее спасибо.