xml2 1.1.1
This article is originally published at https://www.rstudio.com/blog/
Today we are pleased to release version 1.1.1 of xml2. xml2 makes it easy to read, create, and modify XML with R. You can install it with:
install.packages("xml2")
As well as fixing many bugs, this release:
Makes it easier to create an modify XML
Improves roundtrip support between XML and lists
Adds support for XML validation and XSLT transformations.
You can see a full list of changes in the release notes. This is the first release maintained by Jim Hester.
Creating and modifying XML
xml2 has been overhauled with a set of methods to make generating and modfying XML easier:
xml_new_root()
can be used to create a new document and root node simultaneously.
xml_new_root("x") %>%
xml_add_child("y") %>%
xml_root()
#> {xml_document}
#> <x>
#> [1] <y/>
- New
xml_set_text()
,xml_set_name()
,xml_set_attr()
, andxml_set_attrs()
make it easy to modify nodes within a pipeline.
x <- read_xml("<a>
<b />
<c><b/></c>
</a>")
x
#> {xml_document}
#> <a>
#> [1] <b/>
#> [2] <c>\n <b/>\n</c>
x %>%
xml_find_all(".//b") %>%
xml_set_name("banana") %>%
xml_set_attr("oldname", "b")
x
#> {xml_document}
#> <a>
#> [1] <banana oldname="b"/>
#> [2] <c>\n <banana oldname="b"/>\n</c>
New
xml_add_parent()
makes it easy to insert a node as the parent of an existing node.You can create more esoteric node types with
xml_comment()
(comments),xml_cdata()
(CDATA nodes), andxml_dtd()
(DTDs).
Coercion to and from R Lists
xml2 1.1.1 improves support for converting to and from R lists, thanks in part to work by Peter Foley and Jenny Bryan. In particular xml2 now supports preserving the root node name as well as saving all xml2 attributes as R attributes. These changes allows you to convert most XML documents to and from R lists with as_list()
and as_xml_document()
without loss of data.
x <- read_xml("<fruits><apple color = 'red' /></fruits>")
x
#> {xml_document}
#> <fruits>
#> [1] <apple color="red"/>
as_list(x)
#> $apple
#> list()
#> attr(,"color")
#> [1] "red"
as_xml_document(as_list(x))
#> {xml_document}
#> <apple color="red">
XML validation and xslt
xml2 1.1.1 also adds support for XML validation, thanks to Jeroen Ooms. Simply read the document and schema files and call xml_validate()
.
doc <- read_xml(system.file("extdata/order-doc.xml", package = "xml2"))
schema <- read_xml(system.file("extdata/order-schema.xml", package = "xml2"))
xml_validate(doc, schema)
#> [1] TRUE
#> attr(,"errors")
#> character(0)
Jeroen also released the first xml2 extension package in conjunction with xml2 1.1.1, xslt. xslt allows one to apply XSLT (Extensible Stylesheet Language Transformations) to XML documents, which are great for transforming XML data into other formats such as HTML.
Thanks for visiting r-craft.org
This article is originally published at https://www.rstudio.com/blog/
Please visit source website for post related comments.