在 R 中读取 XML 文件,获取不同元素的值,并通过属性节点的文本链接它们

Reading XML files in R, obtain values of different elements, and linking them by the text of attribute's node

提问人:G.Castells 提问时间:1/31/2023 更新时间:1/31/2023 访问量:59

问:

我正在尝试使用 R 导入和处理各种 XML 文件。每个 XML 文件可以包含来自不同个体的不同变量。我想确定与每个人相关的价值观。输出应为数据帧/表,其中每行都是一个单独的变量,每一列都是包含在 XML 中的变量。

例如,我有以下 XML 文件:

<DatosE xmlns:ns0="tmp" xmlns:ns1="aux">
<ns0:DatosE>
    <ns0:Cap>
        <ns0:Code>1000</ns0:Code>
        <ns0:Year>2022</ns0:Year>
    </ns0:Cap>
    <ns1:DataBody>
        <ns1:RealData>
            <ns1:IndividualData identity="1" name="AAA">
                <ns1:DataA>
                    <ns1:Label1>2300.32</ns1:Label1>    
                    <ns1:Label2>5600.90</ns1:Label2>
                    <ns1:Label3>87</ns1:Label3>
                </ns1:DataA>
                <ns1:DataB>
                    <ns1:DataB2>
                        <ns1:Label4>4500.34</ns1:Label4>
                        <ns1:Label5>23.20</ns1:Label5>
                        <ns1:Label6>10000.50</ns1:Label6>
                    </ns1:DataB2>                       
                </ns1:DataB>
            </ns1:IndividualData>
            <ns1:IndividualData identity="2" name="BBB">
                <ns1:DataA>
                    <ns1:Label1>4560.24</ns1:Label1>    
                    <ns1:Label2>896.30</ns1:Label2>
                    <ns1:Label3>790.3</ns1:Label3>
                </ns1:DataA>
                <ns1:DataB>
                    <ns1:DataB2>
                        <ns1:Label4>2004.78</ns1:Label4>
                        <ns1:Label7>890</ns1:Label7>
                        <ns1:Label8></ns1:Label8>
                    </ns1:DataB2>
                    
                </ns1:DataB>
            </ns1:IndividualData>
        </ns1:RealData>
    </ns1:DataBody>
</ns0:DatosE>

我想获得的输出类似于这样:

识别 名字 标签1 标签2 标签5 标签6 标签7 标签8
1 AAA级 2300.32 5600.90 23.20 10000.50
2 血脑屏障 4560.24 896.30 890 0

我想读取 XML 节点中不同元素的不同值号。另外,我想根据值是谁来链接它们。每个人的标识都在“ns1:IndividualData”节点内的属性(标识和名称)中。

我尝试过使用“xmlToDataFrame”函数(XML 包),并使用 XPath synthaxis,但我不知道如何获取属性标识和名称的数字/文本......我可以读取我想要的节点的值,但不能以我想要链接不同数据的方式读取。

我尝试了以下功能:

xmlToDataFrame(nodes = getNodeSet(xmlParse("xmlGGG.xml"), "//ns1:DataA | 
                                        //ns1:DataB2", namespaces = xml_ns(read_xml("xmlGGG.xml"))))

我还研究了“xml2”包......但我的努力没有成功。

有谁知道我如何读取我的 XML 的不同节点/元素的不同值编号,并考虑到属性的文本元素链接所有这些值,而不是指示哪个个体? 谢谢。

r xml-解析 xmlreader

评论


答: 暂无答案