Skip to contents

list_to_xml_string is fast and efficient way to convert a specific list to an xml string. The preferred interface is to use xml_fragment() and xml_doc() to create xml fragments.

Usage

list_as_xml_string(x, use_prolog = FALSE, ...)

Arguments

x

a list as returned by xml2::as_list()

use_prolog

logical, should the xml declaration be included in the output?

...

reserved for future use

Value

a character string with the xml representation of the list

Details

This function is the working horse for turning xml_fragment(), xml_doc() and list object into character xml strings and xml2::xml_document objects.

The input list format is identical to the format returned by xml2::as_list() function, but much faster in generating an xml string from it. It writes the xml directly to a string buffer.

This function allows for easy conversion of R data structures into xml format by creating the list structures in R and then converting them to xml. The function can be used in tandem with xml2::as_list() to convert R data structures.

See also

Examples

data <-
  list(
    study = list(
      person = list(
        name = "John Doe",
        age = "30"
      ),
      person = list(
        name = "Jane Doe",
        age = "25"
      )
    )
  )

list_as_xml_string(data)
#> [1] "<study>\n  <person>\n    <name>John Doe</name>\n    <age>30</age>\n  </person>\n  <person>\n    <name>Jane Doe</name>\n    <age>25</age>\n  </person>\n</study>"
if (require("xml2")){
  list_as_xml_document(data)
}
#> {xml_document}
#> <study>
#> [1] <person>\n  <name>John Doe</name>\n  <age>30</age>\n</person>
#> [2] <person>\n  <name>Jane Doe</name>\n  <age>25</age>\n</person>

#note the xml_fragment function is more powerful to create lists

data <- xml_doc("study", id = "1") /
  frag(
    person = frag(
      name = "John Doe",
      age = "30"
    ),
    person = frag(
      name = "Jane Doe",
      age = "25"
    ),
    "This is a text node"
)

list_as_xml_string(data)
#> [1] "<study id=\"1\">\n  <person>\n    <name>John Doe</name>\n    <age>30</age>\n  </person>\n  <person>\n    <name>Jane Doe</name>\n    <age>25</age>\n  </person>This is a text node\n</study>"