R - Tệp XML

XML là một định dạng tệp chia sẻ cả định dạng tệp và dữ liệu trên World Wide Web, mạng nội bộ và các nơi khác bằng cách sử dụng văn bản ASCII chuẩn. Nó là viết tắt của Ngôn ngữ đánh dấu mở rộng (XML). Tương tự như HTML, nó chứa các thẻ đánh dấu. Nhưng không giống như HTML trong đó thẻ đánh dấu mô tả cấu trúc của trang, trong xml, các thẻ đánh dấu mô tả ý nghĩa của dữ liệu chứa trong tệp anh ấy.

Bạn có thể đọc tệp xml trong R bằng cách sử dụng gói "XML". Gói này có thể được cài đặt bằng lệnh sau.

install.packages("XML")

Dữ liệu đầu vào

Tạo tệp XMl bằng cách sao chép dữ liệu dưới đây vào trình soạn thảo văn bản như notepad. Lưu tệp với một.xml phần mở rộng và chọn loại tệp là all files(*.*).

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

Đọc tệp XML

Tệp xml được đọc bởi R bằng hàm xmlParse(). Nó được lưu trữ dưới dạng danh sách trong 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

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

Nhận số lượng nút có trong tệp 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

output
[1] 8

Chi tiết về nút đầu tiên

Hãy xem bản ghi đầu tiên của tệp đã phân tích cú pháp. Nó sẽ cho chúng ta một ý tưởng về các phần tử khác nhau có trong nút cấp cao nhất.

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

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

$EMPLOYEE
   1
   Rick
   623.3
   1/1/2012
   IT
 

attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"

Nhận các phần tử khác nhau của một nút

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

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

1 
IT 
Michelle

XML thành khung dữ liệu

Để xử lý dữ liệu hiệu quả trong các tệp lớn, chúng tôi đọc dữ liệu trong tệp xml dưới dạng khung dữ liệu. Sau đó xử lý khung dữ liệu để phân tích dữ liệu.

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

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

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

Vì dữ liệu hiện có sẵn dưới dạng khung dữ liệu, chúng ta có thể sử dụng chức năng liên quan đến khung dữ liệu để đọc và thao tác tệp.