English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
XML означает расширяемый язык разметки (eXtensible Markup Language), который был разработан для передачи и хранения данных.
Для чтения и записи XML-файлов в R необходимо установить расширение пакета, мы можем ввести следующую команду в консоль R для установки:
install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")
# Проверить успешную установку:
> any(grepl("XML", installed.packages())) [1] TRUE
Создать файл sites.xml, xml файл и тестовый скрипт находятся в одной директории, код如下:
<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>ru.oldtoolbag.com</url> <likes>222</likes> </site> <site> <id>3</id> <name>Taobao</name> <url>www.taobao.com</url> <likes>333</likes> </site> </sites>
Далее мы можем использовать библиотеку XML для загрузки данных xml файла:
# Загрузка пакета XML library("XML") # Установить имя файла result <- xmlParse(file = "sites.xml") # Вывести результат print(result)
Статистика данных xml:
# Загрузка пакета XML library("XML") # Установить имя файла result <- xmlParse(file = "sites.xml") # Извлечь корневой узел rootnode <- xmlRoot(result) # Статистика данных rootsize <- xmlSize(rootnode) # Вывести результат print(rootsize)
Результат выполнения вышеуказанного кода:
[1] 3
Просмотреть данные узла, строку указывают в квадратных скобках [], указать строку и столбец в квадратных скобках с двойными квадратными скобками [[ ]]::
# Загрузка пакета XML library("XML") # Установить имя файла result <- xmlParse(file = "sites.xml") # Извлечь корневой узел rootnode <- xmlRoot(result) # Просмотреть данные 2-го узла print(rootnode[2]) # Просмотреть 2-й узел 1-й данных print(rootnode[[2]][[1]]) # Просмотреть 2-й узел 3-й данных print(rootnode[[2]][[3]])
Результат выполнения вышеуказанного кода:
$site <site> <id>2</id> <name>w3codebox</name> <url>ru.oldtoolbag.com</url> <likes>222</likes> </site> attr(,"class") [1] "XMLInternalNodeList" "XMLNodeList" <id>2</id> <url>ru.oldtoolbag.com</url>
Данный код производит вывод в формате xml, мы используем функцию xmlToList() для преобразования данных файла в список, что удобнее для чтения:
# Загрузка пакета XML library("XML") # Установить имя файла 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] "ru.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 ru.oldtoolbag.com 222 3 3 Taobao www.taobao.com 333