R语言XML文件

Python013

R语言XML文件,第1张

R语言XML文件

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

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

install.packages("XML")

R

准备XML文件数据

通过将以下数据复制到文本编辑器(如记事本)中来创建XMl文件。 使用.xml扩展名保存文件,并将文件类型选为所有文件(*.*)。创建一个XML文件:input.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

读取XML文件

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

# 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 <- xmlParse(file = "input.xml")

# Print the result.

print(result)

R

当我们执行上述代码时,会产生以下结果 -

<?xml version="1.0"?>

<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>

Shell

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

# Load the packages required to read XML files.

library("XML")

library("methods")

# Give the input file name to the function.

result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.

rootnode <- xmlRoot(result)

# Find number of nodes in the root.

rootsize <- xmlSize(rootnode)

# Print the result.

print(rootsize)

R

当我们执行上述代码时,会产生以下结果 -

output

[1] 8

R

第一个节点的详细信息

下面来看看如何解析文件的第一条记录,它将给出对顶级节点中存在的各种元素的详细信息。

# Load the packages required to read XML files.

library("XML")

library("methods")

# Give the input file name to the function.

result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.

rootnode <- xmlRoot(result)

# Print the result.

print(rootnode[1])

R

当我们执行上述代码时,会产生以下结果 -

$EMPLOYEE

<EMPLOYEE>

<ID>1</ID>

<NAME>Rick</NAME>

<SALARY>623.3</SALARY>

<STARTDATE>1/1/2012</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

attr(,"class")

[1] "XMLInternalNodeList" "XMLNodeList"

Shell

获取节点的其它元素

# Load the packages required to read XML files.

library("XML")

library("methods")

# Give the input file name to the function.

result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.

rootnode <- 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]])

R

当我们执行上述代码时,会产生以下结果 -

<ID>1</ID>

<DEPT>IT</DEPT>

<NAME>Michelle</NAME>

Shell

XML转到数据帧

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

# Load the packages required to read XML files.

library("XML")

library("methods")

# Convert the input xml file to a data frame.

xmldataframe <- xmlToDataFrame("input.xml")

print(xmldataframe)

R

当我们执行上述代码时,会产生以下结果 -

ID NAME SALARY STARTDATE DEPT

1 1 Rick 623.3 1/1/2012 IT

2 2 Dan 515.2 9/23/2013 Operations

3 3 Michelle611 11/15/2014 IT

4 4 Ryan729 5/11/2014 HR

5 5 Gary 843.25 3/27/2015Finance

6 6 Nina578 5/21/2013 IT

7 7Simon 632.8 7/30/2013 Operations

8 8 Guru 722.5 6/17/2014Finance

Shell

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

R语言可以使用read.xlsx()函数来读取excel数据文件,也可以使用read.csv()函数来读取csv格式的数据文件。此外,还可以使用R包RODBC来连接数据库,从而将数据文件存储在数据库中,便于管理和操作。另外,还可以使用R语言的XML包来解析XML格式的数据文件,从而将其导入R语言中进行处理分析。