xmlTree {XML} | R Documentation

## An internal, updatable DOM object for building XML trees

### Description

This is a mutable object (implemented via a closure) for representing an XML tree, in the same spirit as `xmlOutputBuffer` and `xmlOutputDOM` but that uses the internal structures of libxml. This can be used to create a DOM that can be constructed in R and exported to another system such as XSLT (http://www.omegahat.org/Sxslt)

### Usage

    xmlTree(tag, attrs = NULL, dtd=NULL, namespaces=list())

### Arguments

`tag` | the tagname of the top-level element. This is basically ignored!
`attrs` | attributes for the top-level node, in the form of a named vector or list.
`dtd` | the name of the external DTD for this document. See `newXMLDoc`
`namespaces` | a named character vector with each element giving the name space identifier and the corresponding URI, \ e.g `c(shelp = "http://www.omegahat.org/XML/SHelp")`

### Details

This creates a collection of functions that manipulate a shared state to build and maintain an XML tree in C-level code.

### Value

An object of class `XMLInternalDOM` that extends `XMLOutputStream` and has the same interface (i.e. ``methods'') as `xmlOutputBuffer` and `xmlOutputDOM`. Each object has methods for adding a new XML tag, closing a tag, adding an XML comment, and retrieving the contents of the tree.

`addTag` | create a new tag at the current position, optionally leaving it as the active open tag to which new nodes will be added as children
`closeTag` | close the currently active tag making its parent the active element into which new nodes will be added.
`addComment` | add an XML comment node as a child of the active node in the document.
`value` | retrieve an object representing the XML tree. See `saveXML` to serialize the contents of the tree.
`add` | degenerate method in this context.

### Note

This is an early version of this function and I need to iron out some of the minor details.

### Author(s)

Duncan Temple Lang

### References

http://www.w3.org/XML, http://www.xmlsoft.org, http://www.omegahat.org

### See Also

`saveXML` `newXMLDoc` `newXMLNode` `xmlOutputBuffer` `xmlOutputDOM`

### Examples

      tr <- xmlTree("Duncan")
      tr$addTag("name", attrs=c(a=1,b="xyz"), close=FALSE)
        tr$addTag("first", "Larry")
        tr$addTag("last", "User")
      tr$closeTag()
      tr$value()
      cat(saveXML(tr$value()))

      tr <- xmlTree("CDataTest")
      tr$addTag("top", close=FALSE)
      tr$addCData("x <- list(1, a='&');\nx[[2]]")
      tr$addPI("S", "plot(1:10)")
      tr$closeTag()
      cat(saveXML(tr$value()))

[Package XML version 0.97-7 Index]