File: README.md

package info (click to toggle)
r-cran-xml2 1.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 976 kB
  • sloc: cpp: 1,828; xml: 333; javascript: 238; ansic: 213; sh: 74; makefile: 6
file content (84 lines) | stat: -rw-r--r-- 2,373 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

<!-- README.md is generated from README.Rmd. Please edit that file -->

# xml2

<!-- badges: start -->

[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/xml2)](https://cran.r-project.org/package=xml2)
[![Codecov test
coverage](https://codecov.io/gh/r-lib/xml2/branch/master/graph/badge.svg)](https://app.codecov.io/gh/r-lib/xml2?branch=main)
[![R build
status](https://github.com/r-lib/xml2/workflows/R-CMD-check/badge.svg)](https://github.com/r-lib/xml2/actions)
[![R-CMD-check](https://github.com/r-lib/xml2/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/r-lib/xml2/actions/workflows/R-CMD-check.yaml)
<!-- badges: end -->

The xml2 package is a binding to [libxml2](http://xmlsoft.org), making
it easy to work with HTML and XML from R. The API is somewhat inspired
by [jQuery](https://jquery.com).

## Installation

You can install xml2 from CRAN,

``` r
install.packages("xml2")
```

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

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

## Usage

``` r
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_nodeset`s 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](https://xml2.r-lib.org/CODE_OF_CONDUCT.html). By
contributing to this project, you agree to abide by its terms.