English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
XML se refiere al lenguaje de marcado extensible (eXtensible Markup Language), XML se diseñó para transmitir y almacenar datos.
Para leer y escribir archivos XML en R se necesita instalar el paquete de extensión, podemos ingresar el siguiente comando en el console de R para instalarlo:
install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/)
Verificar si se instaló con éxito:
> any(grepl("XML", installed.packages())) [1]] TRUE
Crear el archivo sites.xml, el archivo xml está en el mismo directorio que el script de prueba, el código es el siguiente:
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>es.oldtoolbag.com</url> <likes>222</likes> </site> <site> <id>3</id> <name>Taobao</name> <url>www.taobao.com</url> <likes>333</likes> </site> </sites>
A continuación, podemos usar el paquete XML para cargar los datos del archivo xml:
# 载入 XML 包 library("XML") # 设置文件名 result <- xmlParse(file = "sites.xml") # Salida de resultados print(result)
Estadísticas de datos xml:
# 载入 XML 包 library("XML") # 设置文件名 result <- xmlParse(file = "sites.xml") # Extraer el nodo raíz rootnode <- xmlRoot(result) # Estadísticas de datos rootsize <- xmlSize(rootnode) # Salida de resultados print(rootsize)
El resultado de ejecutar el código anterior es:
[1]] 3
Ver los datos del nodo, en una línea específica se usa [ ], para especificar una fila y columna se usa [[ ]]::
# 载入 XML 包 library("XML") # 设置文件名 result <- xmlParse(file = "sites.xml") # Extraer el nodo raíz rootnode <- xmlRoot(result) # Ver el nodo número 2 datos del nodo print(rootnode[2)] # Ver el nodo número 2 del nodo número 1 un dato print(rootnode[[2]][[1]]) # Ver el nodo número 2 del nodo número 3 un dato print(rootnode[[2]][[3]])
El resultado de ejecutar el código anterior es:
$site <site> <id>2</id> <name>w3codebox</name> <url>es.oldtoolbag.com</url> <likes>222</likes> </site> attr(,"class") [1]] "XMLInternalNodeList" "XMLNodeList" <id>2</id> <url>es.oldtoolbag.com</url>
El código anterior genera salida en formato xml, podemos usar la función xmlToList() para convertir los datos del archivo en formato lista, lo que facilita la lectura:
# 载入 XML 包 library("XML") # 设置文件名 result <- xmlParse(file = "sites.xml") # 转为列表 xml_data <- xmlToList(result) print(xml_data) print("============================") # 输出第一行第二列的数据 print(xml_data[[1]][[2]])
El resultado de ejecutar el código anterior es:
$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] "es.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"
Los datos de archivos XML se pueden convertir en tipo de data frame, de esta manera podemos operar los datos más fácilmente:
# 载入 XML 包 library("XML") # xml 文件数据转为数据框 xmldataframe <- xmlToDataFrame("sites.xml") print(xmldataframe)
El resultado de ejecutar el código anterior es:
id name url likes 1 1 Google www.google.com 111 2 2 w3codebox es.oldtoolbag.com 222 3 3 Taobao www.taobao.com 333