使用R将XML的特定节点转换为CSV
我有这样的XML文件结构使用R将XML的特定节点转换为CSV,r,xml,csv,dataframe,R,Xml,Csv,Dataframe,我有这样的XML文件结构 <Item> <Tab1> <Info1>x<Info1> <Info2>y<Info2> <Info3>z<Info3> </Tab1> <Tab2> <Info1>foo<Info1> <Info2>bar&l
<Item>
<Tab1>
<Info1>x<Info1>
<Info2>y<Info2>
<Info3>z<Info3>
</Tab1>
<Tab2>
<Info1>foo<Info1>
<Info2>bar<Info2>
<Info3>foobar<Info3>
</Tab2>
</Item>
<Item>
<Tab1>
<Info1>x<Info1>
<Info2>y<Info2>
<Info3>z<Info3>
</Tab1>
<Tab2>
<Info1>foo<Info1>
<Info2>bar<Info2>
<Info3>foobar<Info3>
</Tab2>
</Item>
Tab1 Tab2
xyz foobarfoobar
但我只需要在单独的列中使用Tab2信息。如何得到以下结果
Info1 Info2 Info3
foo bar foobar
您需要首先修复示例XML(它当前无效),但如果您有一个可用的XML文档,那么可以使用xpath提取特定节点。 您正在使用XML包(在问题中指定这一点似乎很有帮助),因此函数
XML::getNodeSet
就是您所需要的:
file <- "file.xml"
doc <- XML::xmlParse(file, useInternalNodes = TRUE)
tab2 <- XML::getNodeSet(doc, "//Tab2")
xmldataframe <- XML::xmlToDataFrame(tab2)
请确定用于解析XML的包。
file <- "file.xml"
doc <- XML::xmlParse(file, useInternalNodes = TRUE)
tab2 <- XML::getNodeSet(doc, "//Tab2")
xmldataframe <- XML::xmlToDataFrame(tab2)
> xmldataframe
Info1 Info2 Info3
1 foo bar foobar
2 foo bar foobar