This turns an XML document (or node or nodeset) into the equivalent R
list. Note that this is as_list()
, not as.list()
:
lapply()
automatically calls as.list()
on its inputs, so
we can't override the default.
Usage
as_list(x, ns = character(), ...)
Arguments
- x
A document, node, or node set.
- ns
Optionally, a named vector giving prefix-url pairs, as produced by
xml_ns()
. If provided, all names will be explicitly qualified with the ns prefix, i.e. if the elementbar
is defined in namespacefoo
, it will be calledfoo:bar
. (And similarly for attributes). Default namespaces must be given an explicit name. The ns is ignored when usingxml_name<-()
andxml_set_name()
.- ...
Needed for compatibility with generic. Unused.
Details
as_list
currently only handles the four most common types of
children that an element might have:
Other elements, converted to lists.
Attributes, stored as R attributes. Attributes that have special meanings in R (
class()
,comment()
,dim()
,dimnames()
,names()
,row.names()
andtsp()
) are escaped with '.'Text, stored as a character vector.
Examples
as_list(read_xml("<foo> a <b /><c><![CDATA[<d></d>]]></c></foo>"))
#> $foo
#> $foo[[1]]
#> [1] " a "
#>
#> $foo$b
#> list()
#>
#> $foo$c
#> $foo$c[[1]]
#> [1] "<d></d>"
#>
#>
#>
as_list(read_xml("<foo> <bar><baz /></bar> </foo>"))
#> $foo
#> $foo$bar
#> $foo$bar$baz
#> list()
#>
#>
#>
as_list(read_xml("<foo id = 'a'></foo>"))
#> $foo
#> list()
#> attr(,"id")
#> [1] "a"
#>
as_list(read_xml("<foo><bar id='a'/><bar id='b'/></foo>"))
#> $foo
#> $foo$bar
#> list()
#> attr(,"id")
#> [1] "a"
#>
#> $foo$bar
#> list()
#> attr(,"id")
#> [1] "b"
#>
#>