xml2 v1.3.2


Monthly downloads



Parse XML

Work with XML files using a simple, consistent interface. Built on top of the 'libxml2' C library.



R build status Coverage Status

The xml2 package is a binding to libxml2, making it easy to work with HTML and XML from R. The API is somewhat inspired by jQuery.


You can install xml2 from CRAN,


or you can install the development version from github, using devtools:

# install.packages("devtools")


x <- read_xml("<foo> <bar> text <baz/> </bar> </foo>")

xml_find_all(x, ".//baz")

h <- read_html("<html><p>Hi <b>!")

There are three key classes:

  • xml_node: a single node in a document.

  • xml_doc: the complete document. Acting on a document is usually the same as acting on the root node of the document.

  • xml_nodeset: a set of nodes within the document. Operations on xml_nodesets are vectorised, apply the operation over each node in the set.

Compared to the XML package

xml2 has similar goals to the XML package. The main differences are:

  • xml2 takes care of memory management for you. It will automatically free the memory used by an XML document as soon as the last reference to it goes away.

  • xml2 has a very simple class hierarchy so don't need to think about exactly what type of object you have, xml2 will just do the right thing.

  • More convenient handling of namespaces in Xpath expressions - see xml_ns() and xml_ns_strip() to get started.

Code of Conduct

Please note that the xml2 project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Functions in xml2

Name Description
download_xml Download a HTML or XML file
xml_comment Construct a comment node
xml_replace Modify a tree by inserting, replacing or removing nodes
xml_name The (tag) name of an xml element.
xml_missing Construct an missing xml object
as_xml_document Coerce a R list to xml nodes.
xml_path Retrieve the xpath to a node
as_list Coerce xml nodes to a list.
xml_attr Retrieve an attribute.
xml_ns_strip Strip the default namespaces from a document
xml_cdata Construct a cdata node
xml_serialize Serializing XML objects to connections.
url_escape Escape and unescape urls.
xml_dtd Construct a document type definition
xml_validate Validate XML schema
xml_url The URL of an XML document
url_parse Parse a url into its component pieces.
xml_text Extract or modify the text
xml_find_all Find nodes that match an xpath expression.
write_xml Write XML or HTML to disk.
xml_type Determine the type of a node.
xml2_example Get path to a xml2 example
xml_new_document Create a new document, possibly with a root node
xml_ns XML namespaces.
xml_set_namespace Set the node's namespace
xml_structure Show the structure of an html/xml document.
xml_document-class Register S4 classes
url_absolute Convert between relative and absolute urls.
read_xml Read HTML or XML.
xml_children Navigate around the family tree.
No Results!

Vignettes of xml2

No Results!

Last month downloads


License GPL (>= 2)
URL https://xml2.r-lib.org/, https://github.com/r-lib/xml2
BugReports https://github.com/r-lib/xml2/issues
VignetteBuilder knitr
Encoding UTF-8
RoxygenNote 7.1.0
SystemRequirements libxml2: libxml2-dev (deb), libxml2-devel (rpm)
Collate 'S4.R' 'as_list.R' 'xml_parse.R' 'as_xml_document.R' 'classes.R' 'init.R' 'paths.R' 'utils.R' 'xml_attr.R' 'xml_children.R' 'xml_find.R' 'xml_modify.R' 'xml_name.R' 'xml_namespaces.R' 'xml_path.R' 'xml_schema.R' 'xml_serialize.R' 'xml_structure.R' 'xml_text.R' 'xml_type.R' 'xml_url.R' 'xml_write.R' 'zzz.R'
NeedsCompilation yes
Packaged 2020-04-23 15:45:47 UTC; jhester
Repository CRAN
Date/Publication 2020-04-23 22:00:03 UTC

Include our badge in your README