R 语言 XML 文件

  • R 语言 XML 文件

    XML是一种文件格式,它使用标准ASCII文本共享文件格式以及在Internet,Intranet和其他位置上的数据。它代表可扩展标记语言(XML)。与HTML相似,它包含标记标签。但是与HTML的markup标签描述页面结构不同,在xml中,markup标签描述文件中包含的数据的含义。您可以使用“XML”包读取R中的xml文件。可以使用以下命令安装此软件包。
    
    install.packages("XML")
    
  • 输入数据

    通过将以下数据复制到文本编辑器(如记事本)中来创建XMl文件。保存扩展名为.xml的文件,然后选择文件类型为所有文件(*.*)。
    
    <RECORDS>
       <EMPLOYEE>
          <ID>1</ID>
          <NAME>Rick</NAME>
          <SALARY>623.3</SALARY>
          <STARTDATE>1/1/2012</STARTDATE>
          <DEPT>IT</DEPT>
       </EMPLOYEE>
            
       <EMPLOYEE>
          <ID>2</ID>
          <NAME>Dan</NAME>
          <SALARY>515.2</SALARY>
          <STARTDATE>9/23/2013</STARTDATE>
          <DEPT>Operations</DEPT>
       </EMPLOYEE>
       
       <EMPLOYEE>
          <ID>3</ID>
          <NAME>Michelle</NAME>
          <SALARY>611</SALARY>
          <STARTDATE>11/15/2014</STARTDATE>
          <DEPT>IT</DEPT>
       </EMPLOYEE>
       
       <EMPLOYEE>
          <ID>4</ID>
          <NAME>Ryan</NAME>
          <SALARY>729</SALARY>
          <STARTDATE>5/11/2014</STARTDATE>
          <DEPT>HR</DEPT>
       </EMPLOYEE>
       
       <EMPLOYEE>
          <ID>5</ID>
          <NAME>Gary</NAME>
          <SALARY>843.25</SALARY>
          <STARTDATE>3/27/2015</STARTDATE>
          <DEPT>Finance</DEPT>
       </EMPLOYEE>
       
       <EMPLOYEE>
          <ID>6</ID>
          <NAME>Nina</NAME>
          <SALARY>578</SALARY>
          <STARTDATE>5/21/2013</STARTDATE>
          <DEPT>IT</DEPT>
       </EMPLOYEE>
       
       <EMPLOYEE>
          <ID>7</ID>
          <NAME>Simon</NAME>
          <SALARY>632.8</SALARY>
          <STARTDATE>7/30/2013</STARTDATE>
          <DEPT>Operations</DEPT>
       </EMPLOYEE>
       
       <EMPLOYEE>
          <ID>8</ID>
          <NAME>Guru</NAME>
          <SALARY>722.5</SALARY>
          <STARTDATE>6/17/2014</STARTDATE>
          <DEPT>Finance</DEPT>
       </EMPLOYEE>
            
    </RECORDS>
    
  • 读取XML文件

    R使用函数xmlParse()读取xml文件。它作为列表存储在R中。
    
    # 加载读取XML文件所需的包。
    library("XML")
    
    # 同时加载其他必需的软件包。
    library("methods")
    
    # 给函数输入文件名。
    result <- xmlParse(file = "input.xml")
    
    # 打印结果。
    print(result)
    
    当我们执行以上代码时,它产生以下结果-
    
    1
    Rick
    623.3
    1/1/2012
    IT
    
    2
    Dan
    515.2
    9/23/2013
    Operations
    
    3
    Michelle
    611
    11/15/2014
    IT
    
    4
    Ryan
    729
    5/11/2014
    HR
    
    5
    Gary
    843.25
    3/27/2015
    Finance
    
    6
    Nina
    578
    5/21/2013
    IT
    
    7
    Simon
    632.8
    7/30/2013
    Operations
    
    8
    Guru
    722.5
    6/17/2014
    Finance
    
    获取XML文件中存在的节点数
    
    # 加载读取XML文件所需的软件包。
    library("XML")
    library("methods")
    
    #给函数输入文件名。
    result <- xmlParse(file = "input.xml")
    
    #从xml文件中提取根节点。
    rootnode <- xmlRoot(result)
    
    # 查找根中的节点数。
    rootsize <- xmlSize(rootnode)
    
    # 打印结果。
    print(rootsize)
    
    当我们执行以上代码时,它产生以下结果-
    
    output
    [1] 8
    
  • 第一个节点的详细信息

    让我们看一下解析文件的第一条记录。它将使我们对顶层节点中存在的各种元素有所了解。
    
    # 加载读取XML文件所需的软件包。
    library("XML")
    library("methods")
    
    # 给函数输入文件名。
    result <- xmlParse(file = "input.xml")
    
    # 从xml文件中提取根节点。
    rootnode <- xmlRoot(result)
    
    # 打印结果。
    print(rootnode[1])
    
    当我们执行以上代码时,它产生以下结果-
    
    $EMPLOYEE
       1
       Rick
       623.3
       1/1/2012
       IT
     
    
    attr(,"class")
    [1] "XMLInternalNodeList" "XMLNodeList" 
    
    获取节点的不同元素
    
    # 加载读取XML文件所需的软件包。
    library("XML")
    library("methods")
    
    # 给函数输入文件名。
    result <- xmlParse(file = "input.xml")
    
    # 从xml文件中提取根节点。
    rootnode <- xmlRoot(result)
    
    #获取第一个节点的第一个元素。
    print(rootnode[[1]][[1]])
    
    # 获取第一个节点的第五个元素。
    print(rootnode[[1]][[5]])
    
    # 获取第三个节点的第二个元素。
    print(rootnode[[3]][[2]])
    
    当我们执行以上代码时,它产生以下结果-
    
    1 
    IT 
    Michelle 
    
  • XML到数据帧

    为了有效地处理大型文件中的数据,我们将xml文件中的数据作为数据帧读取。然后处理数据框以进行数据分析。
    
    # 加载读取XML文件所需的软件包。
    library("XML")
    library("methods")
    
    # 将输入的xml文件转换为数据框。
    xmldataframe <- xmlToDataFrame("input.xml")
    print(xmldataframe)
    
    当我们执行以上代码时,它产生以下结果-
    
          ID    NAME     SALARY    STARTDATE       DEPT 
    1      1    Rick     623.30    2012-01-01      IT
    2      2    Dan      515.20    2013-09-23      Operations
    3      3    Michelle 611.00    2014-11-15      IT
    4      4    Ryan     729.00    2014-05-11      HR
    5     NA    Gary     843.25    2015-03-27      Finance
    6      6    Nina     578.00    2013-05-21      IT
    7      7    Simon    632.80    2013-07-30      Operations
    8      8    Guru     722.50    2014-06-17      Finance
    
    由于现在可以将数据用作数据框,因此我们可以使用与数据框相关的功能来读取和操作文件。