XML是一种文件格式,它使用标准ASCII文本在万维网,内联网和其他地方共享文件格式和数据.它代表可扩展标记语言(XML).与HTML类似,它包含标记标记.但是与标记标记描述页面结构的HTML不同,在xml中标记标记描述了包含在文件中的数据的含义.
您可以使用以下内容读取R中的xml文件. "XML"包.可以使用以下命令安装此软件包.
install.packages("XML")
输入数据
通过将以下数据复制到文本编辑器(如记事本)来创建XMl文件.使用 .xml 扩展名保存文件,并选择文件类型为所有文件(*.*).
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文件
R使用 xmlParse()函数读取xml文件.它作为列表存储在R中.
#加载读取XML文件所需的包. library("XML")#还加载其他所需的包. library("methods")#将输入文件名赋予函数. result< - xmlParse(file ="input.xml")#打印结果. print(result)
当我们执行上面的代码时,它产生以下结果 :
1Rick623.31/1/2012IT2Dan515.29/23/2013Operations3Michelle61111/15/2014IT4Ryan7295/11/2014HR5Gary843.253/27/2015Finance6Nina5785/21/2013IT7Simon632.87/30/2013Operations8Guru722.56/17/2014Finance
获取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 IT2 2 Dan 515.20 2013-09-23 Operations3 3 Michelle 611.00 2014-11-15 IT4 4 Ryan 729.00 2014-05-11 HR5 NA Gary 843.25 2015-03-27 Finance6 6 Nina 578.00 2013-05-21 IT7 7 Simon 632.80 2013-07-30 Operations8 8 Guru 722.50 2014-06-17 Finance
由于数据现在可用作数据帧,我们可以使用与数据帧相关的函数来读取和操作文件.