English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

R XML Files

XML signifie Langage de balisage extensible (eXtensible Markup Language), XML est conçu pour transférer et stocker des données.

Le langage R nécessite l'installation de l'extension XML pour lire et écrire des fichiers XML, nous pouvons entrer la commande suivante dans la console R pour installer :

install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/)

Vérifier si l'installation a réussi :

> any(grepl("XML", installed.packages()))
[1]] TRUE

Créer le fichier sites.xml, le fichier xml est dans le même répertoire que le script de test, le code suivant :

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>fr.oldtoolbag.com</url>
        <likes>222</likes>
    </site>
 
    <site>
        <id>3</id>
        <name>Taobao</name>
        <url>www.taobao.com</url>
        <likes>333</likes>
    </site>
</sites>

Ensuite, nous pouvons utiliser le paquet XML pour charger les données du fichier xml :

# Load XML package
library("XML")
# Set file name
result <- xmlParse(file = "sites.xml")
# Sortir les résultats
print(result)

Statistiques des données xml :

# Load XML package
library("XML")
# Set file name
result <- xmlParse(file = "sites.xml")
# Extraire le noeud racine
rootnode <- xmlRoot(result)
# Statistiques des quantités
rootsize <- xmlSize(rootnode)
# Sortir les résultats
print(rootsize)

The output of the above code is:

[1]] 3

Voir les données du noeud, une ligne spécifique utilisant [], une ligne et une colonne spécifiques utilisant [[ ]] :

# Load XML package
library("XML")
# Set file name
result <- xmlParse(file = "sites.xml")
# Extraire le noeud racine
rootnode <- xmlRoot(result)
# Voir le 2 données des noeuds
print(rootnode[2)]
# Voir le 2 du noeud  1 données
print(rootnode[[2]][[1]])
# Voir le 2 du noeud 3 données
print(rootnode[[2]][[3]])

The output of the above code is:

$site
<site>
  <id>2</id>
  <name>w3codebox</name>
  <url>fr.oldtoolbag.com</url>
  <likes>222</likes>
</site> 
attr(,"class")
[1]] "XMLInternalNodeList" "XMLNodeList"        
<id>2</id> 
<url>fr.oldtoolbag.com</url>

XML vers une liste de données

The above code outputs xml format, and we use the xmlToList() function to convert the file data to a list format, which is easier to read:

# Load XML package
library("XML")
# Set file name
result <- xmlParse(file = "sites.xml")
# Convert to list
xml_data <- xmlToList(result)
print(xml_data)
print("============================")
# Output the second column of the first row
print(xml_data[[1]][[2]])

The output of the above code is:

$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] "fr.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 to Data Frame

XML file data can be converted to a data frame type, which makes it easier to operate on the data:

# Load XML package
library("XML")
# xml file data to data frame
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)

The output of the above code is:

  id   name            url likes
1  1 Google www.google.com   111
2  2 w3codebox fr.oldtoolbag.com   222
3  3 Taobao www.taobao.com   333