R - XML 檔案:R 語言中處理 XML 數據的入門指南

你好,有志於編程的你!今天,我們將要開始一段使用 R 語言處理 XML 檔案的刺激旅程。別擔心如果你從未編過程序——我會成為你的友好指導者,我們將一步一步地進行。在本教程結束時,你將能夠像專業人士一樣讀取和操作 XML 檔案!

R - XML Files

XML 是什麼?

在我們深入之前,讓我們先來討論一下 XML 實際上是什麼。XML 的全稱是 eXtensible Markup Language(可擴展標記語言)。它是一種存儲和傳輸數據的方式,既適合人類閱讀,也適合機器閱讀。把它想像成一個樹狀結構,信息按鍵層次組織。

輸入數據

要開始,我們需要一些 XML 數據來操作。讓我們使用一個簡單的書店庫存示例:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>

將這段 XML 內容保存為你工作目錄下名為 bookstore.xml 的文件。

讀取 XML 檔案

現在,讓我們將這個 XML 檔案讀入 R。我們將使用 XML 套件,這是一個解析 XML 數據的強大工具。

步驟 1:安裝並加載 XML 套件

install.packages("XML")
library(XML)

步驟 2:讀取 XML 檔案

# 讀取 XML 檔案
xml_data <- xmlParse("bookstore.xml")

# 獲取根節點
root <- xmlRoot(xml_data)

# 打印 XML 數據結構
print(root)

當你運行這段代碼時,你將在控制台中看到你的 XML 數據結構被打印出來。這就像窺視 XML 檔案內部,看看它是如何組織的!

第一個節點的細節

現在,我們已經加載了 XML 數據,讓我們更詳細地探索它。我們從我們書店的第一本書開始。

# 獲取第一個書節點
first_book <- root[[1]]

# 打印第一本書的細節
print(first_book)

# 獲取第一本書的特定元素
title <- xmlValue(first_book[["title"]])
author <- xmlValue(first_book[["author"]])
year <- xmlValue(first_book[["year"]])
price <- xmlValue(first_book[["price"]])

# 打印提取的信息
cat("標題:", title, "\n")
cat("作者:", author, "\n")
cat("年份:", year, "\n")
cat("價格:", price, "\n")

這段代碼提取並打印第一本書的細節。這就像打開我們虛擬書店中的第一本書並閱讀其信息!

XML 轉換為數據框

當我們處理單個節點時很有用,有時我們希望將整個 XML 檔案轉換為一種更易於分析的格式。在 R 中,這通常意味著將其轉換為數據框。

# 提取書籍信息的函數
extract_book_info <- function(book) {
data.frame(
Title = xmlValue(book[["title"]]),
Author = xmlValue(book[["author"]]),
Year = as.integer(xmlValue(book[["year"]])),
Price = as.numeric(xmlValue(book[["price"]])),
Category = xmlAttrs(book)["category"],
stringsAsFactors = FALSE
)
}

# 對所有書籍節點應用函數
books_df <- do.call(rbind, lapply(xmlChildren(root), extract_book_info))

# 打印結果數據框
print(books_df)

這段代碼創建了一個函數來從每個書籍節點提取信息,然後將此函數應用於我們 XML 檔案中的所有書籍。結果是一個整齊的數據框,我們可以輕鬆地在 R 中操作。

結論

恭喜你!你剛剛踏出了使用 R 語言處理 XML 的第一步。我們已經介紹了如何讀取 XML 檔案、探索其結構、提取特定信息,甚至將其轉換為數據框。

記住,熟能生巧。試著修改 XML 檔案或創建自己的檔案,看看你能否提取不同的信息。你越多地與之交互,你就會越熟練。

快樂編程,願你的 XML 冒險免於故障且充滿刺激!

方法表格

這裡是一個方便的表格,總結了我們在本教程中使用的主要方法:

方法 描述
xmlParse() 讀取並解析 XML 檔案
xmlRoot() 獲取 XML 文件的根節點
xmlChildren() 返回子節點的列表
xmlValue() 提取節點的文本內容
xmlAttrs() 检索節點的屬性
lapply() 對列表或向量應用函數
do.call() 构建并执行函数调用
rbind() 按行组合 R 对象

這些方法是你處理 XML 的工具包。當你越來越熟練時,你會越來越經常使用這些工具。繼續探索,不久你將成為 XML 大師!

Credits: Image by storyset