Skip to content
/ xml2 Public

Bindings to libxml2

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md
Notifications You must be signed in to change notification settings

r-lib/xml2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 13, 2025
bf5619b · Mar 13, 2025
Feb 27, 2025
Mar 13, 2025
Jun 12, 2016
Feb 27, 2025
Oct 21, 2024
Dec 4, 2023
Mar 13, 2025
Oct 21, 2024
Mar 1, 2025
Aug 22, 2023
Dec 16, 2024
Dec 16, 2024
Mar 13, 2025
Feb 27, 2025
Oct 30, 2023
Nov 30, 2023
Mar 13, 2025
Oct 21, 2024
Oct 21, 2024
Feb 28, 2022
Dec 16, 2024
Mar 27, 2020
Dec 16, 2024
Feb 19, 2015
Dec 4, 2023
Feb 27, 2025

Repository files navigation

xml2

CRAN_Status_Badge Codecov test coverage R build status R-CMD-check

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.

Installation

You can install xml2 from CRAN,

install.packages("xml2")

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

# install.packages("pak")
pak::pak("r-lib/xml2")

Usage

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

xml_name(x)
xml_children(x)
xml_text(x)
xml_find_all(x, ".//baz")

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

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 you 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.