Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R将XML的特定节点转换为CSV_R_Xml_Csv_Dataframe - Fatal编程技术网

使用R将XML的特定节点转换为CSV

使用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

我有这样的XML文件结构

<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