R XML文件

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

您可以使用“XML”包读取R语言中的xml文件。 此软件包可以使用以下命令安装。

  1. install.packages("XML")

输入数据

通过将以下数据复制到文本编辑器(如记事本)中来创建XMl文件。 使用.xml扩展名保存文件,并将文件类型选择为所有文件(.)。

  1. <RECORDS>
  2. <EMPLOYEE>
  3. <ID>1</ID>
  4. <NAME>Rick</NAME>
  5. <SALARY>623.3</SALARY>
  6. <STARTDATE>1/1/2012</STARTDATE>
  7. <DEPT>IT</DEPT>
  8. </EMPLOYEE>
  9. <EMPLOYEE>
  10. <ID>2</ID>
  11. <NAME>Dan</NAME>
  12. <SALARY>515.2</SALARY>
  13. <STARTDATE>9/23/2013</STARTDATE>
  14. <DEPT>Operations</DEPT>
  15. </EMPLOYEE>
  16. <EMPLOYEE>
  17. <ID>3</ID>
  18. <NAME>Michelle</NAME>
  19. <SALARY>611</SALARY>
  20. <STARTDATE>11/15/2014</STARTDATE>
  21. <DEPT>IT</DEPT>
  22. </EMPLOYEE>
  23. <EMPLOYEE>
  24. <ID>4</ID>
  25. <NAME>Ryan</NAME>
  26. <SALARY>729</SALARY>
  27. <STARTDATE>5/11/2014</STARTDATE>
  28. <DEPT>HR</DEPT>
  29. </EMPLOYEE>
  30. <EMPLOYEE>
  31. <ID>5</ID>
  32. <NAME>Gary</NAME>
  33. <SALARY>843.25</SALARY>
  34. <STARTDATE>3/27/2015</STARTDATE>
  35. <DEPT>Finance</DEPT>
  36. </EMPLOYEE>
  37. <EMPLOYEE>
  38. <ID>6</ID>
  39. <NAME>Nina</NAME>
  40. <SALARY>578</SALARY>
  41. <STARTDATE>5/21/2013</STARTDATE>
  42. <DEPT>IT</DEPT>
  43. </EMPLOYEE>
  44. <EMPLOYEE>
  45. <ID>7</ID>
  46. <NAME>Simon</NAME>
  47. <SALARY>632.8</SALARY>
  48. <STARTDATE>7/30/2013</STARTDATE>
  49. <DEPT>Operations</DEPT>
  50. </EMPLOYEE>
  51. <EMPLOYEE>
  52. <ID>8</ID>
  53. <NAME>Guru</NAME>
  54. <SALARY>722.5</SALARY>
  55. <STARTDATE>6/17/2014</STARTDATE>
  56. <DEPT>Finance</DEPT>
  57. </EMPLOYEE>
  58. </RECORDS>

读取XML文件

xml文件由R语言使用函数xmlParse()读取。 它作为列表存储在R语言中。

  1. # Load the package required to read XML files.
  2. library("XML")
  3. # Also load the other required package.
  4. library("methods")
  5. # Give the input file name to the function.
  6. result <- xmlParse(file = "input.xml")
  7. # Print the result.
  8. print(result)

当我们执行上面的代码,它产生以下结果:

  1. 1
  2. Rick
  3. 623.3
  4. 1/1/2012
  5. IT
  6. 2
  7. Dan
  8. 515.2
  9. 9/23/2013
  10. Operations
  11. 3
  12. Michelle
  13. 611
  14. 11/15/2014
  15. IT
  16. 4
  17. Ryan
  18. 729
  19. 5/11/2014
  20. HR
  21. 5
  22. Gary
  23. 843.25
  24. 3/27/2015
  25. Finance
  26. 6
  27. Nina
  28. 578
  29. 5/21/2013
  30. IT
  31. 7
  32. Simon
  33. 632.8
  34. 7/30/2013
  35. Operations
  36. 8
  37. Guru
  38. 722.5
  39. 6/17/2014
  40. Finance

获取XML文件中存在的节点数

  1. # Load the packages required to read XML files.
  2. library("XML")
  3. library("methods")
  4. # Give the input file name to the function.
  5. result <- xmlParse(file = "input.xml")
  6. # Exract the root node form the xml file.
  7. rootnode <- xmlRoot(result)
  8. # Find number of nodes in the root.
  9. rootsize <- xmlSize(rootnode)
  10. # Print the result.
  11. print(rootsize)

当我们执行上面的代码,它产生以下结果:

  1. output
  2. [1] 8

第一个节点的详细信息

让我们看看解析文件的第一条记录。 它将给我们一个关于存在于顶层节点中的各种元素的想法。

  1. # Load the packages required to read XML files.
  2. library("XML")
  3. library("methods")
  4. # Give the input file name to the function.
  5. result <- xmlParse(file = "input.xml")
  6. # Exract the root node form the xml file.
  7. rootnode <- xmlRoot(result)
  8. # Print the result.
  9. print(rootnode[1])

当我们执行上面的代码,它产生以下结果:

  1. $EMPLOYEE
  2. 1
  3. Rick
  4. 623.3
  5. 1/1/2012
  6. IT
  7. attr(,"class")
  8. [1] "XMLInternalNodeList" "XMLNodeList"

获取节点的不同元素

  1. # Load the packages required to read XML files.
  2. library("XML")
  3. library("methods")
  4. # Give the input file name to the function.
  5. result <- xmlParse(file = "input.xml")
  6. # Exract the root node form the xml file.
  7. rootnode <- xmlRoot(result)
  8. # Get the first element of the first node.
  9. print(rootnode[[1]][[1]])
  10. # Get the fifth element of the first node.
  11. print(rootnode[[1]][[5]])
  12. # Get the second element of the third node.
  13. print(rootnode[[3]][[2]])

当我们执行上面的代码,它产生以下结果:

  1. 1
  2. IT
  3. Michelle

XML到数据帧

为了在大文件中有效地处理数据,我们将xml文件中的数据作为数据框读取。 然后处理数据帧以进行数据分析。

  1. # Load the packages required to read XML files.
  2. library("XML")
  3. library("methods")
  4. # Convert the input xml file to a data frame.
  5. xmldataframe <- xmlToDataFrame("input.xml")
  6. print(xmldataframe)

当我们执行上面的代码,它产生以下结果:

  1. ID NAME SALARY STARTDATE DEPT
  2. 1 1 Rick 623.30 2012-01-01 IT
  3. 2 2 Dan 515.20 2013-09-23 Operations
  4. 3 3 Michelle 611.00 2014-11-15 IT
  5. 4 4 Ryan 729.00 2014-05-11 HR
  6. 5 NA Gary 843.25 2015-03-27 Finance
  7. 6 6 Nina 578.00 2013-05-21 IT
  8. 7 7 Simon 632.80 2013-07-30 Operations
  9. 8 8 Guru 722.50 2014-06-17 Finance

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