R XML Files Handling
XML is a good web service for transporting data. This is a great source to share data in the world wide web. R provide some packages to perform actions in XML.
So, what we need first is to install the package.
Install XML Package
To install a package, use the install.package() command with the package name, like as follows -
install.packages("XML")
Load XML Package
We hope you have successfully installed the XML package. Now to use this package in your application, you need to load the package library by using library() function.
library("XML")
Reading XML File
R provides xmlParse() function to read the data from an xml file. The syntax of xmlParse() is -
xmlParse(file = "xmlfilename")
Example of R XML Files Handling
Suppose, an xml file name 'employee.xml' located in the current working directory.
<COMPANYNAME>
<EMPLOYEE>
<ID>1</ID>
<NAME>Dhyan</NAME>
<AGE>26</AGE>
<DEPARTMENT>HR</DEPARTMENT>
</EMPLOYEE>
<EMPLOYEE>
<ID>2</ID>
<NAME>Jorz</NAME>
<AGE>27</AGE>
<DEPARTMENT>Finance</DEPARTMENT>
</EMPLOYEE>
<EMPLOYEE>
<ID>3</ID>
<NAME>Mary</NAME>
<AGE>29</AGE>
<DEPARTMENT>IT</DEPARTMENT>
</EMPLOYEE>
<EMPLOYEE>
<ID>4</ID>
<NAME>Sinoy</NAME>
<AGE>32</AGE>
<DEPARTMENT>IT</DEPARTMENT>
</EMPLOYEE>
</COMPANYNAME>
The following command reads the above xml file -
xmldata <- xmlParse(file = 'employee.xml')
print(xmldata)
XML to Data Frame
We can also convert the xml file data to data frame by using xmlToDataFrame() function.
data <- xmlToDataFrame('employee.xml')
print(data)
ID NAME AGE DEPARTMENT
1 1 Dhyan 26 HR
2 2 Jorz 27 Finance
3 3 Mary 29 IT
4 4 Sinoy 32 IT
Write Data Frame to XML
We can also convert the xml file data to data frame by using xmlToDataFrame() function.
students <- data.frame(id = c(1:4), name = c("Mary", "Soy", "Alexa", "Roxy"), class = 5)
xml <- xmlTree()
xml$addTag("document", close=FALSE)
for (i in 1:nrow(students)) {
xml$addTag("row", close=FALSE)
for (j in names(students)) {
xml$addTag(j, students[i, j])
}
xml$closeTag()
}
xml$closeTag()
# display the result
cat(saveXML(xml))
<?xml version="1.0"?>
<document>
<row>
<id>1</id>
<name>Mary</name>
<class>5</class>
</row>
<row>
<id>2</id>
<name>Soy</name>
<class>5</class>
</row>
<row>
<id>3</id>
<name>Alexa</name>
<class>5</class>
</row>
<row>
<id>4</id>
<name>Roxy</name>
<class>5</class>
</row>
</document>