Дана таблица df
:
df <- data.frame(isbn=character(0),
user=character(0),
text=character(0),
rating=character(0),
date=character(0),
link=character(0),
stringsAsFactors=FALSE)
которую нужно сохранить в XML-файле следующей структуры:
<document>
<row>
<isbn>978-5-98034-642-1</isbn>
<user>soul_in_shell</user>
<text>Книга совершенно не оправдывает свое название. Это скорее брошюра в которой написано обо всём понемногу. Не понравилась</text>
<rating>7.25 из 10</rating>
<date>14.01.2014 20:39:51</date>
<link>http://www.magazin.ru/reviews/0001/</link>
</row>
<row>
<isbn>978-4-52174-168-1</isbn>
...
<link>http://www.magazin.ru/reviews/0002/</link>
</row>
</document>
Воспользуемся функциями пакета XML. Создадим пустое дерево при помощи xmlTree()
и добавим в него корневой элемент document
(точнее, его открывающий тег). Затем для каждой строки таблицы будем создавать элементы row
, внутрь которых поместим элементы isbn
, user
или другие, названия которых берутся из имён колонок таблицы. Не забудем и про закрывающие теги closeTag()
.
Полученный документ XML сохраним в виде строки функцией saveXML
, а строку, в свою очередь, запишем в файл. Указывать кодировку документа (encoding = "UTF-8") принципиально важно, если в документе содержится "нелатиница".
library(XML)
xml <- xmlTree()
xml$addTag("document", close=FALSE)
for (i in 1:nrow(df)) {
xml$addTag("row", close=FALSE)
for (j in names(df)) {
xml$addTag(j, df[i, j])
}
xml$closeTag()
}
xml$closeTag()
# save the result
cat(saveXML(xml, encoding = "UTF-8"), file="df.xml")
Комментарии
comments powered by Disqus