English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
XML sta per linguaggio di markup estensibile (eXtensible Markup Language), progettato per trasmettere e memorizzare dati.
In R è necessario installare il pacchetto estensione per leggere e scrivere file XML, possiamo digitare il seguente comando nel terminale di R per installarlo:
install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")
# Visualizzare se l'installazione è avvenuta con successo
> any(grepl("XML", installed.packages())) [1] TRUE
Creare il file sites.xml, il file xml deve essere nello stesso percorso del script di test, il codice è il seguente:
<sites> <site> <id>1</id> <name>Google</name> <url>www.google.com</url> <likes>111</likes> </site> <site> <id>2</id> <name>w3codebox</name> <url>it.oldtoolbag.com</url> <likes>222</likes> </site> <site> <id>3</id> <name>Taobao</name> <url>www.taobao.com</url> <likes>333</likes> </site> </sites>
Poi possiamo utilizzare il pacchetto XML per caricare i dati del file xml:
# 载入 XML 包 library("XML") # Impostare il nome del file result <- xmlParse(file = "sites.xml") # Output dei risultati print(result)
Statisticare le dimensioni xml:
# 载入 XML 包 library("XML") # Impostare il nome del file result <- xmlParse(file = "sites.xml") # Estrazione del nodo radice rootnode <- xmlRoot(result) # Statistica delle dimensioni rootsize <- xmlSize(rootnode) # Output dei risultati print(rootsize)
执行以上代码输出结果为:
[1] 3
Visualizzare i dati del nodo, utilizzare [] per indicare una riga, usare [[ ]] per indicare riga e colonna specifici:
# 载入 XML 包 library("XML") # Impostare il nome del file result <- xmlParse(file = "sites.xml") # Estrazione del nodo radice rootnode <- xmlRoot(result) # Visualizzare i dati del secondo nodo print(rootnode[2]) # Visualizzare il primo dato del secondo nodo print(rootnode[[2]][[1]]) # Visualizzare il terzo dato del secondo nodo print(rootnode[[2]][[3]])
执行以上代码输出结果为:
$site <site> <id>2</id> <name>w3codebox</name> <url>it.oldtoolbag.com</url> <likes>222</likes> </site> attr(,"class") [1] "XMLInternalNodeList" "XMLNodeList" <id>2</id> <url>it.oldtoolbag.com</url>
Il codice sopra convertito produce sempre in formato xml, possiamo utilizzare la funzione xmlToList() per convertire i dati del file in formato elenco, il che rende più facile la lettura:
# 载入 XML 包 library("XML") # Impostare il nome del file result <- xmlParse(file = "sites.xml") # 转为列表 xml_data <- xmlToList(result) print(xml_data) print("============================") # 输出第一行第二列的数据 print(xml_data[[1]][[2]])
执行以上代码输出结果为:
$site $site$id [1] "1" $site$name [1] "Google" $site$url [1] "www.google.com" $site$likes [1] "111" $site $site$id [1] "2" $site$name [1] "w3codebox" $site$url [1] "it.oldtoolbag.com" $site$likes [1] "222" $site $site$id [1] "3" $site$name [1] "Taobao" $site$url [1] "www.taobao.com" $site$likes [1] "333" [1] "============================" [1] "Google"
XML 文件数据可以转为数据框类型,这样我们就更方便对数据进行操作:
# 载入 XML 包 library("XML") # xml 文件数据转为数据框 xmldataframe <- xmlToDataFrame("sites.xml") print(xmldataframe)
执行以上代码输出结果为:
id name url likes 1 1 Google www.google.com 111 2 2 w3codebox it.oldtoolbag.com 222 3 3 Taobao www.taobao.com 333