Fichiers XML R

XML signifie eXtensible Markup Language. XML est conçu pour transmettre et stocker des données.

Si vous n'êtes pas familier avec XML, vous pouvez d'abord vous référer à :Tutoriel XML

Pour lire et écrire des fichiers XML en R, vous devez installer un package d'extension. Vous pouvez saisir la commande suivante dans la console R pour l'installer :

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

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

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

Créez un fichier sites.xml. Placez le fichier xml dans le même répertoire que le script de test. Le code est le suivant :

Exemple

<sites> <site> <id>1</id> <name>Google</name> <url>www.google.com</url> <likes>111</likes> </site> <site> <id>2</id> <name>Example</name> <url>www.example.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 package XML pour charger les données à partir du fichier XML :

Exemple

# Charger le package XML
library("XML")


# Définir le nom du fichier
result <- xmlParse(file = "sites.xml")

# Afficher le résultat
print(result)

Compter la quantité de données XML :

Exemple

# Charger le package XML
library("XML")


# Définir le nom du fichier
result <- xmlParse(file = "sites.xml")

# Extraire le nœud racine
rootnode <- xmlRoot(result)

# Compter la quantité de données
rootsize <- xmlSize(rootnode)

# Afficher le résultat
print(rootsize)

L'exécution du code ci-dessus produit le résultat suivant :

[1] 3

Pour afficher les données d'un nœud, pour une certaine ligne, utilisez[ ], pour la ligne et la colonne spécifiées, utilisez[[ ]]:

Exemple

# Charger le package XML
library("XML")

# Définir le nom du fichier
result <- xmlParse(file = "sites.xml")

# Extraire le nœud racine
rootnode <- xmlRoot(result)


# Afficher les données du 2e nœud
print(rootnode[2])

# Afficher la 1re donnée du 2e nœud
print(rootnode[[2]][[1]])

# Afficher la 3e donnée du 2e nœud

print(rootnode[[2]][[3]])

L'exécution du code ci-dessus produit le résultat suivant :

$site
<site>
  <id>2</id>
  <name>Example</name>
  <url>www.example.com</url>
  <likes>222</likes>
</site> 

attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"        
<id>2</id> 
<url>www.example.com</url> 

Convertir XML en une liste de données

La sortie du code ci-dessus est au format XML. Nous pouvons utiliser la fonction xmlToList() pour convertir les données du fichier en une liste, ce qui facilite la lecture :

Exemple

# Charger le package XML
library("XML")


# Définir le nom du fichier
result <- xmlParse(file = "sites.xml")

# Convertir en liste
xml_data <- xmlToList(result)

print(xml_data)
print("============================")

# Afficher les données de la première ligne et de la deuxième colonne
print(xml_data[[1]][[2]])

L'exécution du code ci-dessus produit le résultat suivant :

$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] "Example"

$site$url
[1] "www.example.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"

Convertir XML en data frame

Les données d'un fichier XML peuvent être converties en un type data frame, ce qui facilite la manipulation des données :

Exemple

# Charger le package XML
library("XML")

# Convertir les données du fichier XML en data frame
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)

L'exécution du code ci-dessus produit le résultat suivant :

  id   name            url likes
1  1 Google www.google.com   111
2  2 Example www.example.com   222
3  3 Taobao www.taobao.com   333
Autres extensions