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>
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文件所需的包. 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文件所需的包. 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
由于数据现在可用作数据帧,我们可以使用与数据帧相关的函数来读取和操作文件.