R - XML文件

XML是一种文件格式,它使用标准ASCII文本在万维网,内联网和其他地方共享文件格式和数据.它代表可扩展标记语言(XML).与HTML类似,它包含标记标记.但是与标记标记描述页面结构的HTML不同,在xml中标记标记描述了包含在文件中的数据的含义.

您可以使用以下内容读取R中的xml文件. "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

由于数据现在可用作数据帧,我们可以使用与数据帧相关的函数来读取和操作文件.