XML是一种文件格式,它使用标准ASCII文本共享万维网,内部网和其他地方的文件格式和数据。 它代表可扩展标记语言(XML)。 类似于HTML它包含标记标签。 但是与HTML中的标记标记描述页面的结构不同,在xml中,标记标记描述了包含在文件中的数据的含义。
您可以使用“XML”包读取R语言中的xml文件。 此软件包可以使用以下命令安装。
1 | install .packages( "XML" ) |
输入数据
通过将以下数据复制到文本编辑器(如记事本)中来创建XMl文件。 使用.xml扩展名保存文件,并将文件类型选择为所有文件(*.*)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | & lt ;RECORDS& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;1& lt ;/ID& gt ; & lt ;NAME& gt ;Rick& lt ;/NAME& gt ; & lt ;SALARY& gt ;623.3& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;1/1/2012& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;IT& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;2& lt ;/ID& gt ; & lt ;NAME& gt ;Dan& lt ;/NAME& gt ; & lt ;SALARY& gt ;515.2& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;9/23/2013& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;Operations& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;3& lt ;/ID& gt ; & lt ;NAME& gt ;Michelle& lt ;/NAME& gt ; & lt ;SALARY& gt ;611& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;11/15/2014& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;IT& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;4& lt ;/ID& gt ; & lt ;NAME& gt ;Ryan& lt ;/NAME& gt ; & lt ;SALARY& gt ;729& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;5/11/2014& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;HR& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;5& lt ;/ID& gt ; & lt ;NAME& gt ;Gary& lt ;/NAME& gt ; & lt ;SALARY& gt ;843.25& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;3/27/2015& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;Finance& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;6& lt ;/ID& gt ; & lt ;NAME& gt ;Nina& lt ;/NAME& gt ; & lt ;SALARY& gt ;578& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;5/21/2013& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;IT& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;7& lt ;/ID& gt ; & lt ;NAME& gt ;Simon& lt ;/NAME& gt ; & lt ;SALARY& gt ;632.8& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;7/30/2013& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;Operations& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;EMPLOYEE& gt ; & lt ;ID& gt ;8& lt ;/ID& gt ; & lt ;NAME& gt ;Guru& lt ;/NAME& gt ; & lt ;SALARY& gt ;722.5& lt ;/SALARY& gt ; & lt ;STARTDATE& gt ;6/17/2014& lt ;/STARTDATE& gt ; & lt ;DEPT& gt ;Finance& lt ;/DEPT& gt ; & lt ;/EMPLOYEE& gt ; & lt ;/RECORDS& gt ; |
读取XML文件
xml文件由R语言使用函数xmlParse()读取。 它作为列表存储在R语言中。
1 2 3 4 5 6 7 8 9 10 11 | # Load the package required to read XML files. library( "XML" ) # Also load the other required package. library( "methods" ) # Give the input file name to the function. result & lt ;- xmlParse( file = "input.xml" ) # Print the result. print(result) |
当我们执行上面的代码,它产生以下结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | 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文件中存在的节点数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # Load the packages required to read XML files. library( "XML" ) library( "methods" ) # Give the input file name to the function. result & lt ;- xmlParse( file = "input.xml" ) # Exract the root node form the xml file. rootnode & lt ;- xmlRoot(result) # Find number of nodes in the root. rootsize & lt ;- xmlSize(rootnode) # Print the result. print(rootsize) |
当我们执行上面的代码,它产生以下结果
1 2 | output [1] 8 |
第一个节点的详细信息
让我们看看解析文件的第一条记录。 它将给我们一个关于存在于顶层节点中的各种元素的想法。
1 2 3 4 5 6 7 8 9 10 11 12 | # Load the packages required to read XML files. library( "XML" ) library( "methods" ) # Give the input file name to the function. result & lt ;- xmlParse( file = "input.xml" ) # Exract the root node form the xml file. rootnode & lt ;- xmlRoot(result) # Print the result. print(rootnode[1]) |
当我们执行上面的代码,它产生以下结果
1 2 3 4 5 6 7 8 9 10 | $EMPLOYEE 1 Rick 623.3 1/1/2012 IT attr(, "class" ) [1] "XMLInternalNodeList" "XMLNodeList" |
获取节点的不同元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # Load the packages required to read XML files. library( "XML" ) library( "methods" ) # Give the input file name to the function. result & lt ;- xmlParse( file = "input.xml" ) # Exract the root node form the xml file. rootnode & lt ;- xmlRoot(result) # Get the first element of the first node. print(rootnode[[1]][[1]]) # Get the fifth element of the first node. print(rootnode[[1]][[5]]) # Get the second element of the third node. print(rootnode[[3]][[2]]) |
当我们执行上面的代码,它产生以下结果
1 2 3 | 1 IT Michelle |
XML到数据帧
为了在大文件中有效地处理数据,我们将xml文件中的数据作为数据框读取。 然后处理数据帧以进行数据分析。
1 2 3 4 5 6 7 | # Load the packages required to read XML files. library( "XML" ) library( "methods" ) # Convert the input xml file to a data frame. xmldataframe & lt ;- xmlToDataFrame( "input.xml" ) print(xmldataframe) |
当我们执行上面的代码,它产生以下结果
1 2 3 4 5 6 7 8 9 | 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 |
由于数据现在可以作为数据帧,我们可以使用数据帧相关函数来读取和操作文件。
到此这篇关于R语言操作XML文件实例分析的文章就介绍到这了,更多相关R语言XML文件操作内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!
- 本文固定链接: https://zxbcw.cn/post/211245/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)